【POJ】【2348】Euclid‘s Game
博弈论
题解:http://blog.sina.com.cn/s/blog_7cb4384d0100qs7f.html
感觉本题关键是要想到【当a-b>b时先手必胜】,后面的就只跟奇偶性有关了
1 //POJ 2348 2 #include<cstdio> 3 #include<algorithm> 4 bool game(int a,int b){ 5 if (a%b==0) return 1; 6 else if (a-b<b) return !game(b,a-b); 7 return 1;//若a-b>b 则先手必胜 8 } 9 int main(){ 10 int a,b; 11 while(scanf("%d%d",&a,&b)!=EOF){ 12 if (!a && !b) break; 13 if (a<b) std::swap(a,b); 14 printf(game(a,b) ? "Stan wins\n" : "Ollie wins\n"); 15 } 16 return 0; 17 }