P1290 欧几里德的游戏
原本不想写的,但细节有些多qwq,还是放上吧。
假设a严格大于b
当a<b*2时,只有一种方法往下走;否则就可以有多种方法,并且一定至少有一种可以使自己必胜,因为可以随意决定接下来取的顺序(可在草稿纸上推算)
然后注意细节(我交了3次才过QAQ)
#include<iostream> #include<cstdio> using namespace std; int main() { int c,p; long long a,b; scanf("%d",&c); while(c--) { scanf("%lld%lld",&a,&b); p=1; if(a<b) swap(a,b); //数据没说a一定大于b if(a==b) {printf("Stan wins\n"); continue;} //特判a==b while(a<b*2) a-=b,swap(a,b),p^=1; if(p) printf("Stan wins\n"); else printf("Ollie wins\n"); } return 0; }