Euclid's Game

博弈论

如果a/b>=2则先手必胜,否则就对(b,a-b)的情况取反 a可以整除b的时候也是必赢的

要保证a>b

#include<bits/stdc++.h> 
#define ll long long
using namespace std;

ll a,b;


int main()
{
	while(cin>>a>>b)
	{
		if(a==0 && b==0)	break;
		
		int times = 1;
			if(a<b)
				swap(a,b);
		while(a%b && a/b==1)
		{
			a-=b;
			if(a<b)
				swap(a,b);
			times^=1;
	
		}
		if(!times)
			cout << "Ollie wins" << endl;
		else 
			cout << "Stan wins" << endl; 	
	}
	
	return 0;
}

uva 10368

posted @ 2019-03-16 00:03  新新人類  阅读(169)  评论(0编辑  收藏  举报