HDU1847-Good Luck in CET-4 Everybody!
来源:互联网 发布:mac安装office2016 编辑:程序博客网 时间:2024/06/09 23:52
Good Luck in CET-4 Everybody!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2980 Accepted Submission(s): 1880
Problem Description
大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。
“升级”?“双扣”?“红五”?还是“斗地主”?
当然都不是!那多俗啊~
作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。
Good luck in CET-4 everybody!
“升级”?“双扣”?“红五”?还是“斗地主”?
当然都不是!那多俗啊~
作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。
Good luck in CET-4 everybody!
Input
输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。
Output
如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。
Sample Input
13
Sample Output
KikiCici分析:思路一:直接分析,来回取一些次数后,必定剩下0、1、2三种情况,如果是0,则先手败,否则先手胜!代码:#include<stdio.h>int main() { int n; while(scanf("%d",&n)!=EOF) { if(n%3==0) printf("Cici\n"); else printf("Kiki\n"); } return 0;}思路二:求SG值代码:#include<stdio.h>void Get_SG(int num[],int SG[]){ int i,j,t; for(i=0;i<=1000;i++ ) if(SG[i]==0){//i为必败点 for(j=0;j<=10;j++) { t=i+num[j];//所有一步操作能够进入必败点的店都是必胜点! if(t>1000) break; SG[t] = 1; } } }int main(){ int num[11],n,i; int SG[1024] = {0}; for(i=0;i<=10;i++) num[i]=1<<i; Get_SG(num,SG); while(scanf("%d",&n)!=EOF){ if(SG[n]) puts("Kiki"); else puts("Cici"); } system("pause"); return 0;}我刚开始写的代码时:/*不知道为什么RE了,重定向输出结果和Ac代码的值时一样的! */#include<stdio.h>#include<string.h>#define N 10int s[N]={1,2,4,8,16,32,64,128,256,512},f[1002];int mex(int p) { int i,t,g[1002]; memset(g,0,sizeof(g)); for(i=0;i<N;i++) { t=p-s[i]; if(t<0) break; if(f[t]==-1) f[t]=mex(t); g[f[t]]=1; } for(i=0;i<1002;i++) { if(g[i]==0) return i; }}int main() { freopen("out.txt","w",stdout); int i,j,flag,n; memset(f,0,sizeof(f)); /*for(i=1;i<=1000;i++) { flag=0; for(j=0;j<N;j++) { if(i<s[j]) break; if(f[i-s[j]]==0) { flag=1; break; } } if(flag==1) f[i]=1; else f[i]=0; }*/ for(i=1;i<1000;i++){ f[i]=mex(i); if(f[i]!=0) printf("1\n",f[i]); else printf("0\n"); } fclose(stdout); while(scanf("%d",&n)!=EOF){ if(f[n]==-1){ f[n]=mex(n); } if(f[n]==0) printf("Cici\n"); else printf("Kiki\n"); } system("pause"); return 0;}代码输出的值和上面是一样的,但是老师RE,无语死了,大家帮忙看看!谢谢啦
- HDU1847 Good Luck in CET-4 Everybody!
- Hdu1847 Good Luck in CET-4 Everybody!
- hdu1847 Good Luck in CET-4 Everybody!
- HDU1847-Good Luck in CET-4 Everybody!
- HDU1847:Good Luck in CET-4 Everybody!
- HDU1847----Good Luck in CET-4 Everybody!
- hdu1847 Good Luck in CET-4 Everybody!
- hdu1847 Good Luck in CET-4 Everybody!
- HDU1847 Good Luck in CET-4 Everybody!
- HDU1847 Good Luck in CET-4 Everybody!
- hdu1847 Good Luck in CET-4 Everybody!
- hdu1847 Good Luck in CET-4 Everybody!
- HDU1847 Good Luck in CET-4 Everybody!
- HDU1847 Good Luck in CET-4 Everybody! 博弈
- hdu1847 Good Luck in CET-4 Everybody! (巴什博弈)
- HDU1847 Good Luck in CET-4 Everybody!【博弈】
- hdu1847 Good Luck in CET-4 Everybody!(博弈论)
- 【HDU1847】Good Luck in CET-4 Everybody!(博弈)
- 面向对象(1)
- 测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
- box2d弹球 cocos2d-x重力感应(cocos2d-x2.1)
- LR检查点用法小结
- enq: SQ – contention
- HDU1847-Good Luck in CET-4 Everybody!
- 自由软件,开源软件,
- java_IO流之SequenceInputStream合并流的使用
- 八位二进制数为什么表示范围是:-128~~+127?
- gc cr block lost
- C++ code to verify IEEE 754 double precision floating-point format
- java_IO流之ObjectInputStream与ObjectOutputStream的使用
- 一个程序员与素数的故事
- Generic Netlink HOW-TO based on Jamal's original doc