POJ 2348
如果n/m>1的话就Stan wins
否则就球gcd,看经过多少次可以出现m==0的情况。注意的是在求gcd的过程中会出现n/m>1的情况,
#include"iostream" using namespace std; int gcd(int n,int m) { int i=0; while(1) { if(n/m>1) break; i++; n-=m; if(n<m) {int tmp=m;m=n;n=tmp;} if(m==0) break; } return i; } int main() { int n,m; while(cin>>n>>m) { if(n==m&&n==0) break; if(n==m){ cout<<"Stan wins"<<endl; continue; } if(n<m){int tmp=m;m=n;n=tmp;} int k=gcd(n,m); if(k%2) { cout<<"Ollie wins"<<endl; continue; } cout<<"Stan wins"<<endl; } return 0; }