hdu1846巴什博弈
接触一下博弈,这是最经典的博弈了。
思路,小于等于m的就不说了,当只有m+1个物品时,则第一个人会输。
这样就可以找到制胜的最佳方案了,当n=(m+1)*r+s时,只要第一个人先取s个,则接下来只要保证留下(m+1)倍数个的物品给下一个人便能赢的比赛。
代码:
#include<iostream> using namespace std; int main() { int T,n,m; cin>>T; while(T--) { cin>>n>>m; int tmp=n%(m+1); if(tmp>0) cout<<"first"<<endl; else cout<<"second"<<endl; } return 0; }