【巴什博弈 抢夺资源】

问题描述

杰洛特在面对敌将时,总是需要获得更多的资源才能战胜敌人,很可惜,敌人也是这么想的。
因此他们共同来到一个城市买物资(两位都有无限的钱)
本城市中一共有n个物资,
他们俩轮流进行购买(由杰洛特先买)
每一次购买可以买 1……m 个物资
最先刚好购买光商品的人可以获胜
输入
多组数据输入
每行一个n和m。
0 < m <= n <= 100000
输出
如果是杰洛特胜利则输出"Gerlot",如果是狂猎胜利则输出"Wildhunte" (没有双引号)

思路

这是一个经典的博弈问题
当n≤m时,这时先手的人可以一次取走所有的,先手胜

当n=m+1时,这时先手无论取走多少个,后手的人都能取走剩下所有的,后手胜

当n=k∗(m+1)时,对于每m+1个石子,先手取i个,后手一定能将剩下的(m+1−i)个都取走,因此后手必胜;

当n=k∗(m+1)+x(0

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
//题目 2108: 抢夺资源
int main()
{
    ll n,m;
    while(cin>>n>>m){
        if(n%(m+1)==0){
            cout<<"Wildhunte"<<endl;
        }
        else cout<<"Gerlot"<<endl;
    }
    getchar();
    getchar();
    return 0;
}

你可能感兴趣的:(蓝桥杯,博弈论)