这道题应该算是这道题进阶版的叭.
思路
本来我是考虑把 n n n转化为二进制,然后每次取二进制上的一个位,但是这样是错的,因为我既证不了它的正确性,也证不了它错在哪.
每次只能取 2 2 2的幂次方,也就是 1 , 2 , 4 , 8 , 16...... 1,2,4,8,16...... 1,2,4,8,16......,于是乎,想起巴什博奕的核心思想:每一轮把所能取的数固定成一个定值,但是,这道题每次取值没有特别的限制,只要每次取小于等于 n n n个就行.
那么,就可以来找规律:
当
n
=
0
n=0
n=0时,必败点,因为一开始就已经无法操作了
当
n
=
1
n=1
n=1时,必胜点,直接选1
当
n
=
2
n=2
n=2时,必胜点,直接选2
当
n
=
3
n=3
n=3时,必败点,第一次
K
i
k
i
Kiki
Kiki选完后留下的只能是一个或者是两个,那么
C
i
c
i
Cici
Cici可以直接选完
然后接着往后推,就可以发现规律:当n%3==0时,
K
i
k
i
Kiki
Kiki必输,否则,
C
i
c
i
Cici
Cici必输
代码
#include <cstdio>
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;
}