思路:显然,n=m+1时是必败态,可以推得n是m+1的倍数的时候,都是必败态。这就是经典的巴什博弈。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
#define ll long long
#define max3(a,b,c) max(a,max(b,c))
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
if(n%(m+1)==0){
cout<<"second"<<endl;
}else{
cout<<"first"<<endl;
}
}
return 0;
}
本文介绍了一个经典的策略游戏——巴什博弈,并提供了一段简洁的C++代码实现。通过判断当前石子数量n是否为(m+1)的倍数来决定先手玩家是否处于必胜状态。当n%(m+1)==0时,后手玩家将获胜;反之,则先手玩家获胜。
2178

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



