2018南京区域赛A Adrien and Austin【博弈】

题意:给你n个石子,下标从1到n,每次最多只能取连续的k个石子,问最后谁赢。

思路:刚开始看题以为是简单的博弈,直接上板子来了一发wa,然后仔细读题发现是需要取连续的k个,推导一波不难发现,当k为1时,需要判断n的奇偶,当n大于1时,先手必赢。另外需要特判一下当n为0的情况。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 100;


int main()
{
    int n, k;
    cin >> n >> k;
    bool flag = false;
    if(k == 1)
    {
        if(n % 2 == 0)
            flag = true;
    }
    if(n == 0)
        flag = true;
    if(flag)
        cout << "Austin" << endl;
    else
        cout << "Adrien" << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41785863/article/details/89432293