转载自:http://blog.csdn.net/hzxph/article/details/6660726
当我知道,这代码的长度时,我彻底无语了,这如果是比赛时这样的题目做不出来,我想我会,
倍受打击,我想不到……………………………………………………………………………………………………
找必败点,很容易知道当剩下3时,这是一个必败点,又每一个数减1或减2都可以成为3的倍数,意识到这点大概就会做了,
因为假如这个n不是3的倍数,那么我们总可以让它减1或减2变成3的倍数,而作为3的倍数对手是不可能一次就拿完的说,这样一直下去…………………………最终先手者一定有机会把它变成3,或是后手者自杀,故意留给先手者2的k次幂,这样就也是胜利者,所以说
3的倍数就是必败点,
令我无语的代码:
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin >>n){
if(n%3)
cout <<"Kiki" <<endl;
else
cout <<"Cici" <<endl;
}
return 0;
}
转载:http://blog.csdn.net/hzxph/article/details/6660726