这个博弈叫巴什博弈,比较简单易懂。
有n个石子,轮流取,每次取1~m个,无子可取的人判负。
给对方留m+1个子,遍可取胜,当子数是m+1的倍数的时候,对方取多少,自己只要让其保持m+1的倍数就好,因此当n%(m+1)==0的时候,先手必败。
如果把规则稍微改一下,最后取完的人判负,那么我们就要努力给对手只留一个子,也就是要给对手留m+1+1个子,因此n%(m+1)==1的时候,先手必败。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int C,n,m;
cin>>C;
for(int i=0;i<C;i++){
cin>>n>>m;
if(n%(m+1)==0)cout<<"second"<<endl;
else cout<<"first"<<endl;
}
return 0;
}
本文介绍了巴什博弈的基本规则及取胜策略。对于初始石子数为n,每次可取1到m个石子的情况下,详细分析了如何通过特定策略确保胜利,并提供了相应的编程实现。
2172

被折叠的 条评论
为什么被折叠?



