这种博弈比前面一种要稍微复杂一点。我们来看下下面这个游戏。
有两堆火柴棍,每次可以从某一堆取至少1根火柴棍(无上限),或者从两堆取相同的火柴棍数,最后取完的是胜利者。
直接记结论吧,证明自己上网查询。
若两堆火柴的初始值为(X,Y) 且X<Y,则令Z = Y - X,计算:
代码如下:
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
int m,n,a,b,z;
while(cin>>m>>n)
{
a=max(m,n);
b=min(m,n);
z=a-b;
int t=(int)(sqrt(5)+1)*z/2;
if(t==b)
cout<<"Second"<<endl;
else
cout<<"First"<<endl;
}
return 0;
}