【题目链接】 http://poj.org/problem?id=2348
【题目大意】
给出两个数,两个参赛者轮流用一个数减去另一个数的倍数,当一个数为0的时候游戏获胜,
求先手是否必胜
【题解】
如果出现一个数是另一个数两倍以上的时候,操作者就拥有了一定的自由度,
也就是处于必胜态,那么只要判断谁先到有自由操作的状态或者胜利的状态,谁就必胜。
【代码】
#include <cstdio>
#include <algorithm>
using namespace std;
int a,b;
int main(){
while(~scanf("%d%d",&a,&b),a+b){
int f=1;
for(;;){
if(a>b)swap(a,b);
if(b%a==0)break;
if(b-a>a)break;
b-=a; f^=1;
}if(f)puts("Stan wins");
else puts("Ollie wins");
}return 0;
}