博弈论的一道入门题
当n < m的时候一定是第一个人赢;
当n > m的时候我们可以进行分解为n = (m + 1) * r + s;
当s == 0;那么一定是第二个人赢,因为无论第一个人如何拿,第二个人总是会给对方留下(m + 1)的倍数;最终一定是第二个人获胜;
所以可以推出谁拿的时候是 (m + 1)的倍数,那么他就会输掉;
代码如下
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
ll t;
cin >> t;
while(t--)
{
ll x,y;
cin >> x >> y;
if(x <= y)
{
cout << "first" << endl;
continue;
}
if(x % (y + 1) == 0)
{
cout << "second" << endl;
}
else
{
cout << "first" << endl;
}
}
return 0;
}