题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1847
当n是3的倍数时,后手必胜;其他时,先手必胜。
2的幂对3取模只能是1或2。存在两个2的幂之和是3的倍数。当n是3的倍数时,先手取一个2的幂,后手取
一个2的幂与之前2的幂之和为3的倍数,那么一直保持这个状态后手必胜。当n不是3的倍数时,新手取一个数,让n为3的倍数,那么先手必胜。
其实找一下1-10的NP状态,很快也能得出规律。
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n%3==0)
printf("Cici\n");
else
printf("Kiki\n");
}
return 0;
}