HDU 1847 Good Luck in CET-4 Everybody!

传送门

这道题应该算是这道题进阶版的叭.

思路

本来我是考虑把 n n n转化为二进制,然后每次取二进制上的一个位,但是这样是错的,因为我既证不了它的正确性,也证不了它错在哪.

每次只能取 2 2 2的幂次方,也就是 1 , 2 , 4 , 8 , 16...... 1,2,4,8,16...... 1,2,4,8,16......,于是乎,想起巴什博奕的核心思想:每一轮把所能取的数固定成一个定值,但是,这道题每次取值没有特别的限制,只要每次取小于等于 n n n个就行.

那么,就可以来找规律:
n = 0 n=0 n=0时,必败点,因为一开始就已经无法操作了
n = 1 n=1 n=1时,必胜点,直接选1
n = 2 n=2 n=2时,必胜点,直接选2
n = 3 n=3 n=3时,必败点,第一次 K i k i Kiki Kiki选完后留下的只能是一个或者是两个,那么 C i c i Cici Cici可以直接选完
然后接着往后推,就可以发现规律:当n%3==0时, K i k i Kiki Kiki必输,否则, C i c i Cici Cici必输

代码

#include <cstdio>
using namespace std;
int main (){
	int n;
	
	while(scanf ("%d", &n)!=EOF){
		if(n%3==0) printf("Cici\n");
		else printf("Kiki\n");
	}
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值