杰洛特在面对敌将时,总是需要获得更多的资源才能战胜敌人,很可惜,敌人也是这么想的。
因此他们共同来到一个城市买物资(两位都有无限的钱)
本城市中一共有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