用了递归的方法解题。。 fac达到了很好的效果。
#include<iostream>
using namespace std;int times;
int main()
{
int i,j,k;
int x,y;
int n,m;
void fac(int n,int m);
while(cin>>n>>m,x||y)
{
int temp;
if(m>n)
{
temp=m;
m=n;
n=temp;
}
times=0;
times=0;
fac(n,m);
if(times%2==0)
cout<<"Stan wins"<<endl;
else
cout<<"Ollie wins"<<endl;
}
}
void fac(int n,int m) //达到必胜点需要的步骤
{
int temp;
if(m>n)
{
temp=m;
m=n;
n=temp;
}
if(n>=2*m||n%m==0) // 这里wa了无数次 __int64 m; 不然2*m溢出。
return;
times++;
fac(m,n-m);
}