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

题意

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

思路

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

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

你可能感兴趣的:(博弈论,思维,博弈论)