1. 程式人生 > >2018年ACM-ICPC 南京現場賽 A.Adrien and Austin

2018年ACM-ICPC 南京現場賽 A.Adrien and Austin

題意

有一堆數量為N的石子,石子編號從1N1\cdots N排成一列,兩個人玩遊戲,每次可以取1K1\cdots K個連續編號的石子,Adrien先手,如果有誰不能取了則他輸,兩個人為Adrien 和Austin

思路

當K為1時顯然的和N的奇偶性有關,那麼我們考慮一下K>1K>1的情況 對於先手的Adrien來說,他對任意的N顆石子,他都可以將這N顆石子分成兩段相當數量的石子(從中間開始拿對於奇數拿一顆,對於偶數拿兩顆),那麼剩下的兩段相當於是獨立的兩個相同的遊戲了,如果後手拿其中一段,那麼我先手就對另一段進行這樣相同的拆分,那麼能保證我先手總是有石子能拿,所以我先手必勝,也就是說當K

>1K>1的時候先手必勝,K==1K==1的時候判斷奇偶,N==0N==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;
}