巴什博弈
问题模型:两个人从个物体中取,取物品,规定每次至少取一个,最多取m个,最后取光者得胜。
结论:当n%(m+1)==0先手必败.否则先手必胜
若是最后取光者输的话,其他条件不变,(n-1)%(m+1)==0 先手必败,否则必胜
下面上例题:
石子争夺战
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;
}