题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1847
题目描述:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…);
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
我们可以把他当成一个只能取2^n数的一个取石子游戏,很像巴什博弈,但是由于没有明确的可取周期,
我们无法构造必胜态的路径。
采用博弈论的思想,先观察底层的状态,0为必败态,1为必胜态,2为必胜态,3为必败态……
我们知道 通过一次操作能将当前状态变成必败态的操作都为必胜态。那么4(3+1),5(3+2)也都是必胜态,6为必败态。
不难发现,必败态为3的倍数。我们来证明一下
首先我们可取的数是2的n次方,所以不可能整除3。那么任何一个3的倍数无论怎么拿也不可能变成3的倍数
反之,由于我们可以取1,2两种数,当我们面对一个非3的倍数时,可以通过去1或者2将其变为3的倍数,然后接下来无论对方怎么取,
我都将其保持在3的倍数。直至30
#include<stdio.h>int main(){int n;while(scanf("%d",&n)!=EOF){if(n%3)printf("Kiki\n");else printf("Cici\n");}return 0;}
题目链接:
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦