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;
}