hdu 1847

转载自: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

你可能感兴趣的:(HDU)