Codeforces Gym 101981 A Adrien and Austin

本文分析了一种博弈论游戏,其中两名玩家轮流从一堆石头中取走1至K个连续的石头,探讨了不同条件下先手与后手的胜负规律。当K等于1时,胜负由石头总数的奇偶性决定;当K大于等于2时,先手有必胜策略,通过将石头分为数量相等的两堆,模仿对手的操作确保胜利。

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

题意:一堆石头有N个,两个人轮流取,每人只能取1-K个石头,且取的石子必须是连续的K个,问谁赢?

分析:

1、K==1时,只与石子N的奇偶性有关,N为奇数先手赢,N为偶数后手赢。

2、N==0时,后手赢。

3、K>=2时,由于必须拿连续的K个,所以先手是有必胜策略的:即从石子最中间取走1或2颗石头,将石头分成数目相等的两堆,这样无论后手怎么取,先手只需在剩下的那堆石头模仿后手操作,就能保证必赢。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
typedef long long ll;
int N,K;
int main()
{
	ios::sync_with_stdio(false);
	cin>>N>>K;
	if(N==0){
		cout<<"Austin"<<endl;
		return 0;
	}
	if(K==1){
		if(N%2)
			cout<<"Adrien"<<endl;
		else
			cout<<"Austin"<<endl;
		return 0;
	}
	if(N<=K){
		cout<<"Adrien"<<endl;
		return 0;
	}
	if(K>=2)
		cout<<"Adrien"<<endl;
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值