博弈合集
1.巴什博弈
只有一堆n个物品,两人分别轮流从这堆物品取物,规定每次至少取一个,至多取m个,最后取光者胜。
对应例题:
Description
这有一堆石子,总共有n个。UpMing和King_Zhang两个人正在路上散步,恰好瞧见了这堆石子,UpMing想要拿这堆石子去做装饰品,而King_Zhang也有自己的想法,因此两个人决定进行一场游戏,赢的人可以拿走这一堆石子。
游戏的规则是UpMing和King_Zhang两个人轮流拿,UpMing先拿。每个人每一次最少拿1颗,最多拿K颗,能拿到最后1颗石子的人获胜。假设UpMing和King_Zhang两人都非常聪明,在拿石子的过程中不会出现任何的失误。题目要求给出两个整数N和K,问最后两人中到底谁能赢得比赛并拿走这一堆石子。假如N=3,K=2。无论UpMing如何拿,King_Zhang都可以拿到最后1颗石子并赢得游戏的胜利。
Input
输入包含两个整数N和K。(1≤N≤1e9, 1≤K≤1e9);
Output
请你打印出游戏的结果究竟是谁获胜并且拿走了这一堆石子。如果UpMing获胜,则打印"UpMing",反之则打印"King_Zhang"。(打印时不包含引号)。
Samples
Input Copy
10 3
Output
UpMing
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,k;
cin>>n>>k;
if(n%(k+1)==0)
cout<<"King_Zhang";
else
cout<<"UpMing";
return 0;
}代码片
结论:若n%(m+1)==0则先取者必败
后续更新ing。。。