题目概述
有
n
张牌,每次可以拿走
解题报告
先求出 [1,maxn] 的SG函数,然后判断SG(n)是不是 0 就可以了。
这个数据范围是给
示例程序
#include<cstdio>
using namespace std;
const int maxn=1000;
int n,sg[maxn+5],ti,vis[maxn+5];
void Make()
{
for (int i=1;i<=maxn;i++,ti++)
{
for (int j=0;(1<<j)<=i;j++) vis[sg[i-(1<<j)]]=ti;
while (vis[sg[i]]==ti) sg[i]++;
}
}
int main()
{
freopen("program.in","r",stdin);
freopen("program.out","w",stdout);
for (Make();~scanf("%d",&n);) puts(sg[n]?"Kiki":"Cici");
return 0;
}