这题范围是1-1000,可以用打表法写出来,满足2^n<=1000这个条件的n的取值是[0,9]。
就简单了,只要在i-2^n的记录中找到必败点那么就可以认定i点是必胜点。
然后打表输出就可以了。
1 #include <stdio.h> 2 bool num[1000+10]; 3 int main() 4 { 5 int n,i,j; 6 num[0]=num[1]=1;//1代表赢 0代表输 (针对先手来说) 7 int POWa[11]={0,1,2,4,8,16,32,64,128,256,512}; 8 for(i=2;i<=1000;++i) 9 { 10 num[i]=0; 11 for(j=1;j<=10;++j) 12 { 13 if(i<POWa[j]) break; 14 if(i==POWa[j]) 15 { 16 num[i]=1; 17 break; 18 } 19 if(num[i-POWa[j]]==0) 20 { 21 num[i]=1; 22 break; 23 } 24 } 25 } 26 while(scanf("%d",&n)!=EOF) 27 { 28 if(num[n]==1) 29 printf("Kiki\n"); 30 else 31 printf("Cici\n"); 32 } 33 return 0; 34 }