标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 7942 | Accepted: 3227 |
Description
25 7
11 7
4 7
4 3
1 3
1 0
Input
Output
Sample Input
34 12 15 24 0 0
Sample Output
Stan wins Ollie wins
可以参考:《基础训练题解》哈尔滨出版社 俞经善...等编
题意讲解:两个人Ollie和Stan玩一个游戏,每次输入两个非负数。 Stan为先手,Ollie为后手。
每次从大数中减去小数的任意倍数,将其减完后的结果赋值给被减的大数。Ollie刚才的游戏规则,
然后进行循环。直到小数不能再大数中拿到一个非0的数为止。最后一个拿到数的玩家为赢家。
算法讲解:大数除以小数,当值大于1时,正在进行此次游戏的玩家为赢家。否则要继续游戏。
当游戏进行了偶数次的时候,就是Stan赢,否则就是Ollie赢了。
#include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> #include <stdio.h> #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int x, y; while(scanf("%d %d", &x, &y)!=EOF) { if(x==0 && y==0) break; int dd; int cnt=0; //记录游戏进行次数 int n=x; int m=y; while(n!=0 && m!=0 ) { if(m>n){ cnt++; dd = m/n; m=m%n; //大数被赋值成那个差值 if(dd >= 2) break; } else{ cnt++; dd=n/m; n=n%m; if(dd>=2 ) break; } } if(cnt%2==1) printf("Stan wins\n"); else printf("Ollie wins\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/yspworld/p/4337376.html