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;
}
此时需要中断。

posted @ 2011-05-10 13:12  Ac_smile  阅读(235)  评论(0编辑  收藏  举报