标签:巴什博弈 namespace ring color int 个数 ret using style
有一堆物品,共n个,两人轮流从这堆物品中取,规定每次至少取一个,至多m个,获胜条件分为两种,分别是最后取光者胜或者是最后取光者败。
1.假如物品个数小于等于m个,那么第一个人就能一次取完。
2.假如物品个数等于m加一个,第一个人取不大于m的任意个第二个人都能取完。
3.假如物品个数为m+1的倍数,那么无论第一个人取多少个,第二个人都做到他取完之后物品剩余个数是m的倍数。
4.假如物品个数不是m+1的倍数,那么第一个人一定能做到他取之后使得物品个数为m+1的倍数
结论:物品个数为m+1的倍数时,先手必输。
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { int n,m; scanf("%d%d",&n,&m); if(n%(m+1)==0)printf("2\n"); else printf("1\n"); return 0; }
标签:巴什博弈 namespace ring color int 个数 ret using style
原文地址:https://www.cnblogs.com/wz-archer/p/10662131.html