hdu 1847 被打击了

本文探讨了一种简单的游戏策略,即两个玩家轮流从一堆石头中取走1或2颗,直到取完为止。通过分析得出,只要剩余石头数量不是3的倍数,先手玩家总能获胜。文章附带了简洁的C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我知道,这代码的长度时,我彻底无语了,这如果是比赛时这样的题目做不出来,我想我会

倍受打击,我想不到……………………………………………………………………………………………………

              找必败点,很容易知道当剩下3时,这是一个必败点,又每一个数减1或减2都可以成为3的倍数,意识到这点大概就会做了,

因为假如这个n不是3的倍数,那么我们总可以让它减1或减2变成3的倍数,而作为3的倍数对手是不可能一次就拿完的说,这样一直下去…………………………最终先手者一定有机会把它变成3,或是后手者自杀,故意留给先手者2的k次幂,这样就也是胜利者,所以说

3的倍数就是必败点,

令我无语的代码:


#include<iostream>

using namespace std;

int main()
{
	int n;
	while(cin >>n){
		if(n%3)
			cout <<"Kiki" <<endl;
		else
			cout <<"Cici" <<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值