当前位置: 代码迷 >> 综合 >> 2018年ACM-ICPC 南京现场赛 A.Adrien and Austin
  详细解决方案

2018年ACM-ICPC 南京现场赛 A.Adrien and Austin

热度:43   发布时间:2023-11-23 07:03:40.0

题意

有一堆数量为N的石子,石子编号从1?N 排成一列,两个人玩游戏,每次可以取1?K 个连续编号的石子,Adrien先手,如果有谁不能取了则他输,两个人为Adrien 和Austin

思路

当K为1时显然的和N的奇偶性有关,那么我们考虑一下K>1的情况
对于先手的Adrien来说,他对任意的N颗石子,他都可以将这N颗石子分成两段相当数量的石子(从中间开始拿对于奇数拿一颗,对于偶数拿两颗),那么剩下的两段相当于是独立的两个相同的游戏了,如果后手拿其中一段,那么我先手就对另一段进行这样相同的拆分,那么能保证我先手总是有石子能拿,所以我先手必胜,也就是说当1K>1的时候先手必胜,K==1 的时候判断奇偶,N==0 的时候特判即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <stack>
#include <list>
int main()
{int n,k;scanf("%d%d",&n,&k);if(n==0){printf("Austin\n");}else if(k==1){if(n%2==1)printf("Adrien\n");elseprintf("Austin\n");}elseprintf("Adrien\n");return 0;
}

 

  相关解决方案