题目描述
两个玩家,Stan和Ollie。开始有两个自然数。Stan为第一个玩家,他可以从大数中减去小数的任意倍数(得到的结果要大于0)。Ollie为第二个玩家,重复第一个玩家的玩法。然后循环该玩法,直到其中一个玩家减之后得到0,他就是赢家。
例子, 游戏以 (25,7)开始:
25 7
11 7
4 7
4 3
1 3
1 0
Stan wins.
输入
输入有多组数据,每组数据有两个正整数。“0 0”表示输入结束。游戏总是从Stan开始。
输出
如果Stan赢了,则输出“Stan win”,否则输出“Ollie win”。
样例输入 复制
34 12
15 24
0 0
样例输出 复制
Stan wins
Ollie wins
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;int m;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0)
break;
if(n<m)
swap(n,m);
int count = 1;
int flag = 1;
while(n/m==1&&n%m!=0)
{
int t=n%m;
n=m;
m=t;
flag=-flag;
}
if(flag==-1)
cout<<"Ollie wins"<<endl;
else
cout<<"Stan wins"<<endl;
}
return 0;
}