codeforces gym 101981 Adrien and Austin 博弈论

https://codeforces.com/gym/101981

题目大意:有 n n n块岩石,两个人轮流取,每次最少取 1 1 1块,最多取 K K K块,且只能取编号连续的一段,当一个人没有岩石可取时,这个人就失败了,输出获胜的人的名字( A d r i e n Adrien Adrien先手)。

思路:分情况考虑:(1) n = 0 n=0 n=0时, A d r i e n Adrien Adrien直接失败;(2) k = 1 k=1 k=1时,若 n n n为奇数, A d r i e n Adrien Adrien必胜,否则 A d r i e n Adrien Adrien必败;(3)其余情况必定有 k > = 2 k>=2 k>=2成立,此时对于任意的 n n n,第一步操作 A d r i e n Adrien Adrien均可从中间把石子等分成两部分( n n n为奇数 只取中间的 1 1 1块 否则取中间的 2 2 2块),因为只能对连续的编号进行操作,此时 A d r i e n Adrien Adrien只需镜像模仿对方的取法即可,所以 A d r i e n Adrien Adrien必胜。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define pr pair<int,int>
typedef long long ll;
using namespace std;
 
int n,k;
 
int main()
{
	scanf("%d %d",&n,&k);
	if(n==0)
		printf("Austin\n");
	else if(k==1)
	{
		if(n&1)
			printf("Adrien\n");
		else
			printf("Austin\n");
	}
	else
		printf("Adrien\n");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值