杭电 1847
来源:互联网 发布:正大数据恢复中心 深圳 编辑:程序博客网 时间:2024/05/23 22:16
题意:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
思路:求SG值
代码:
#include<stdio.h>#include<string.h>int sg[1001];int mex(int n)//求sg值{int a[11]={0};int i=1;while(i<=n){if(sg[n-i]==-1)sg[n-i]=mex(n-i);a[ sg[n-i] ]=1;i=i*2;}for(i=0;i<11;i++)if(a[i]==0)return i;}int main(){int n;memset(sg,-1,sizeof(sg));sg[0]=0;for(n=0;n<1001;n++)mex(n);while(scanf("%d",&n)!=EOF){if(sg[n]){printf("Kiki\n");}else{printf("Cici\n");}}return 0;}
- 杭电 1847
- 杭电1847
- 杭电
- 杭电
- 杭电
- 杭电 1234 和 杭电 2115
- 杭电2056之Rectangles 杭电
- 杭电ACM1061Rightmost Digit
- 杭电2099 7.11
- 杭电ACM 1003
- 杭电 ACM 2016
- 杭电ACM1466
- 杭电ACM1003
- 杭电ACM1225
- 杭电ACM2023
- 杭电ACM2602
- 杭电ACM2955
- 杭电ACM3198
- 企业进行网络营销推广的技巧
- [面试] 找出数组中两个只出现一次的数字找出这两个只出现一次的数字
- 实用Linux命令(2)文件操作
- pthread_self 简介
- 水池数目 简单搜索
- 杭电 1847
- 用vs2010调试javascript
- 界面编程之基本界面组件(6)AnalogClock 和 DigitalClock(时钟)
- pthread_create 简介
- 将文件字符编码方式从 windows 的 gb18030 转 linux 下的 utf-8
- 工具目录
- SVN插件在MyEclipse8.0如何安装使用?
- Poj 3428 Formatting function
- scanf()函数用法小结