Good Luck in CET-4 Everybody!

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

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!

Input
输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。
Output
如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。
Sample Input
1
3
Sample Output
Kiki
Cici

典型的错误代码,我犯了。。。

#include <cstdio>
#include <iostream>
using namespace std;
int main ()
{
int n, cnt;
while(scanf("%d", &n) != EOF) {
cnt=0;
while(n) {
if(n&1) {
cnt++;
}
n >>= 1;
}
printf("%s\n", cnt&1 ? "Kiki":"Cici");
}
return 0;
}

View Code

正确解法:

#include <cstdio>
#include <iostream>
using namespace std;
int base[10];
bool dp[1005];
void Init()
{
for(int i=0; i<10; i++) {
base[i] = 1<<i;
}
for(int i=1; i<=1000; i++) {
dp[i] = 0;
for(int j=0; j<10 && base[j]<=i; j++) {
if(dp[i-base[j]]==0) {
dp[i] = 1;
break;
}
}
}
}
int main ()
{
Init();
int n;
while(scanf("%d", &n) != EOF) {
printf("%s\n", dp[n]? "Kiki":"Cici");
}
return 0;
}

当然,通过枚举可以发现规律:

#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n%3==0)
printf("Cici\n");
else
printf("Kiki\n");
}
}

HDU 1847 ——Good Luck in CET-4 Everybody!相关推荐

  1. HDU 1847 Good Luck in CET-4 Everybody!(巴什博弈论)

    题目地址:HDU 1847 这题可以用NP状态转换. 首先0的时候就代表无法出牌了,所以是必败态.然后根据每一个可以一步到达必败态的是必胜态,不可以一步到达必败态的是必败态.可以推出状态转移方程,然后 ...

  2. HDU 1847 Good Luck in CET-4 Everybody

    题目链接:​​​​​​Problem - 1847 (hdu.edu.cn) Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工 ...

  3. HDU 1847 Good Luck in CET-4 Everybody! (巴什博弈)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  4. HDU 1847 Good Luck in CET-4 Everybody!(组合博弈)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  5. HDU 1847 Good Luck in CET-4 Everybody! 尼姆博弈

    点击打开链接 Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  6. HDU 1847 Good Luck in CET-4 Everybody! (sg函数)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  7. HDU(1847)Good Luck in CET-4 Everybody!

    利用PN分析求解此题.递推下去会发现3和3的倍数都是P点. #include <iostream> #include <stdio.h> #include <string ...

  8. HDU 1847 Good Luck in CET-4 Everybody!

    当对手面对3的时候,你就已经赢了,所以,尽可能的给对手剩下3,那么只要n是3的倍数就 是Cici赢,不是的话,Kiki会想办法给Cici留下3. #include<stdio.h>int ...

  9. HDU - 1847 Good Luck in CET-4 Everybody!(sg函数,水题)

    题目链接:点击查看 题目大意:给出n张牌,两个人轮流摸牌,每次只能摸2的幂次,问先手必胜还是必败 题目分析:简单sg打表题,先预处理出sg表,然后O(1)查询即可 #include<iostre ...

最新文章

  1. 工业机器人的下一个竞争焦点已经非常明确:通用人工智能(AGI)
  2. 家中电脑无法共享,联通域名解析劫持竟是罪魁
  3. ubuntu1604编译android5.1(android L)失败error: unsupportedreloc 43等问题
  4. Linux 访问文件的acl信息,linux文件权限管理与ACL访问控制列表
  5. Mybatis增删改
  6. Treap原理和实现方法
  7. scheme 学习:pair 和 list
  8. Kali Linux 无线渗透测试入门指南 第八章 攻击企业级 WPA 和 RADIUS
  9. 滴滴上线特快和特惠:极端天气绝不动态加价
  10. eosio.cdt心得
  11. Debugging with GDB (2) 调用GDB
  12. php连接数据库(一)
  13. 美国计算机语言学phd,美国大学语言学(Linguistics)专业PhD排名(转)2013
  14. Python爬虫实战:css加密 动态字体练习 猿人学比赛题目七题详解
  15. 安卓获取手机唯一码工具类
  16. 【问题】PPS、PPSX自动放映格式打开直接进入编辑模式
  17. 键盘定位板图纸_客制化键盘
  18. 【蛮力算法】数据结构与算法
  19. Intel Xeon Platinum 8269CY(Cascade Lake)处理器性能评测
  20. grafana模板导入没有数据解决方法

热门文章

  1. 【问题解决】This container is having trouble accessing https://k8s.gcr.io | 如何解决从k8s.gcr.io拉取镜像失败问题?
  2. TJOI 2015 弦论 题解
  3. 深入理解JAVA中的跨包继承
  4. 天翼云流量服务器,天翼云CDN常见问题解答
  5. 2022年最新国产单端口1000M Ethernet PHY简介
  6. iOS开发-简单图片背景替换(实现抠图效果)
  7. vue获取上一个路由地址
  8. 关于 Vue.js 的那些事儿
  9. 游戏一直被攻击掉线卡顿是什么原因?服务器被攻击怎么办?
  10. hql删除mysql语句_hibernate -- HQL语句总结