oj--博弈合集

博弈合集
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。。。

猜你喜欢

转载自blog.csdn.net/weixin_51267249/article/details/112705987
OJ