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;
}


 

原文地址:https://www.cnblogs.com/amourjun/p/5134169.html