Good Luck in CET-4 Everybody!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7017 Accepted Submission(s): 4516
“升级”?“双扣”?“红五”?还是“斗地主”?
当然都不是!那多俗啊~
作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。
Good luck in CET-4 everybody!
1 3
KikiCici
解题思路:此题主要是分析几组数据找到规律就A啦;
首先看:(1)当牌数sum < 3时;那么kiki一定赢;
(2)当牌数sum = 3时;kiki一定输;
(3)当sum = 4 时;kiki一定赢,因为kiki拿一张牌后,还剩3张,无论cici拿多少张他都会输;还有就是kiki直接拿完4张;
(4)当sum = 5 时;kiki一定赢,因为kiki可以拿的方案有1、2、4张 ,当其拿两张时,cici必输;
(5)当sum = 6 时;kiki一定输;因为kiki可以拿的方案有1、2、4张,无论那一张,他都无法赢;
(6)当sum = 7时;kiki一定赢;因为如果kiki拿一张牌,剩下6张,那么由(5)知,cici一定输;
(7)当sum = 8时;kiki一定赢,直接拿完;
(8) 当sum = 9 时;kiki一定输;因为kiki可以拿的方案有1、2、4、8张,且无论其拿多少,都会输;(如他拿一张时,还剩8张,直接输,两张时,
还剩7张,然后cici拿4张,kiki输,四张时,还剩5张,cici再拿2张,kiki输,八张时,还剩1张,kiki输。)
综上可以看出,当牌的数量sum小于3时,kiki赢,当sum大于3时;若sum能被3整除,则cici赢,如sum = 6、9.否则kiki赢;如sum=3、4、5、7、8.
AC代码:
#include<stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==1||n==2) printf("Kiki\n"); else if(n==3||n%3==0) printf("Cici\n"); else if(n%3!=0) printf("Kiki\n"); } return 0; }