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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ftx456789/article/details/83107930

题意

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

思路

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

猜你喜欢

转载自blog.csdn.net/ftx456789/article/details/83107930