首页 > 其他 > 详细

巴什博弈

时间:2020-07-21 22:54:53      阅读:115      评论:0      收藏:0      [点我收藏+]
题目描述:

杰洛特在面对敌将时,总是需要获得更多的资源才能战胜敌人,很可惜,敌人也是这么想的。
因此他们共同来到一个城市买物资(两位都有无限的钱)
本城市中一共有n个物资,
他们俩轮流进行购买(由杰洛特先买)
每一次购买可以买 1……m 个物资
最先刚好购买光商品的人可以获胜

输入:

多组数据输入
每行一个n和m。
0 < m <= n <= 100000

输出:

如果是杰洛特胜利则输出"Gerlot",如果是狂猎胜利则输出"Wildhunte" (没有双引号)

样例输入:

23 2
4 3

样例输出:

Gerlot
Wildhunte

巴什博弈:

两个顶尖聪明的人在玩游戏,有一堆n个石子,每次每个人能取[1,m]个石子,不能拿的人输,请问先手与后手谁必败?

我们分类讨论一下这个问题:

当n≤m时,这时先手的人可以一次取走所有的;

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

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

当n=k?(m+1)+x(0<x<m+1)时,先手可以先取x个,之后的局势就回到了上一种情况,无论后手取多少个,先手都能取走m+1个中剩下的,因此先手必胜。

结论:

通过上面的分析可以得出结论:当n能整除m+1时先手必败,否则先手必胜。


#include<stdio.h>
int main() {
    int n, m;
    while(scanf("%d%d",&n,&m)!=EOF)
        if(n % (m + 1))
            printf("Gerlot\n");
        else
            printf("Wildhunte\n");
    return 0;
}

巴什博弈

原文:https://www.cnblogs.com/Noturns/p/13356967.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!