链接:点击打开链接
我是暴力打表,根据前面推后面:推n,只要看n减比n小的2的幂次得出的结果,只要有一个是Cici赢,那么n就是Kiki赢。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
int f[10],i,n,mark[1100],j;
f[0]=1;
for(i=1;i<10;i++)
f[i]=f[i-1]*2;
memset(mark,0,sizeof(mark));
mark[1]=1;
mark[2]=1;
for(i=3;i<=1000;i++){
for(j=0;j<10;j++){
if(i==f[j]){
mark[i]=1;
break;
}
else if(i>f[j]){
if(mark[i-f[j]]==0){
mark[i]=1;
break;
}
else continue;
}
else break;
}
}
while(cin>>n){
if(mark[n])
cout<<"Kiki"<<endl;
else
cout<<"Cici"<<endl;
}
return 0;
}