題目鏈接:http://poj.org/problem?id=3922
http://acm.hdu.edu.cn/showproblem.php?pid=2486
這玩意好難,不理解,先記錄一下。
雷神題解:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html
貼一份代碼:
#include#include using namespace std; int f[5000000]; int n,k; int work(int n){ int i,j; f[1]=1; f[2]=2; for(i=1,j=2;f[j] n) j--; while(f[j]!=n){ n-=f[j]; while(f[j]>n) j--; } return f[j]; } int main() { int i,t,cas; scanf("%d",&cas); for(i=1;i<=cas;i++){ scanf("%d%d",&n,&k); t=work(n); printf("Case %d: ",i); if(t==n) printf("lose\n"); else printf("%d\n",t); } return 0; }