简单的sg函数的应用。。虽然写出了sg函数,但目前还不理解其中的原理,只好套模板了。
代码如下:
const int M = 1005;
int sg[M];
void getSG()
{
sg[0] = 0;
for(int i = 1; i < M; ++i) {
bool vis[M];
memset(vis, 0, sizeof(vis));
for(int j = 0; (1<<j) <= i; ++j)
vis[sg[i-(1<<j)]] = 1;
for(int j = 0; ; ++j)
if(!vis[j]) {
sg[i] = j;
break;
}
}
}
int main()
{
int n;
getSG();
while(~scanf("%d", &n)) {
if(sg[n]) puts("Kiki");
else puts("Cici");
}
}