ACM 2348 Euclid's Game http://acm.pku.cn/JudgeOnline/problem?id=2348
方法:若整除先者胜,若不然,GCD,看每次的商是否为1,若为1,i++,继续,判断他的奇偶性;
证明,若整除,显然,不然,若遇到m/n>1时,其中1、2的时候包含所有胜负,则做该判断的时候的人必胜
我最后更新的代码如下:
#include <iostream> using namespace std; int main () { int n=0,m=0; while (cin>>m>>n) { if(m==0&&n==0) break; int i=0; int temp=0; if (m<n) { temp=m; m=n; n=temp; } if(m%n==0) cout<<"Stan wins"<<endl; else { while (n) { if (m/n==1) { int lum=n; n=m%n; m=lum; i++; } else break; } if (i%2==0) cout<<"Stan wins"<<endl; else cout <<"Ollie wins"<<endl; } } return 0; }但我不明白我之前的代码错在哪儿了,如果有人知道的话麻烦指点小弟一下,小弟将不胜感激,我先前的代码如下:#include <iostream> using namespace std; int main () { int n=0,m=0; while (cin>>m>>n) { if(m==0&&n==0) break; int i=0; int temp=0; if (m<n) { temp=m; m=n; n=temp; } if((m-n)>=n||m==n) cout<<"Stan wins"<<endl; else { while (m%n!=0) { int lum=n; n=m%n; m=lum; i++; } if (i%2==0) cout <<"Ollie wins"<<endl; else cout<<"Stan wins"<<endl; } } return 0; }