这题的解法实在是精妙。
对于任意一个局面(a,b),它是必胜局还是必败局这是确定的。但按这题的要求,如果要我们自己来判断却会极其难。
对于局面(m,n)(m>n),两人一直往下取,必然会到局面(m%n,n)。
如果m/n<2,则此时只有一种往下走的方法,下一步必然是(m%n,n)。
如果m/n>2,则局面(m,n)的先取者就可以决定由谁去面对局面(m%n,n),因为这个先取者足够聪明可以判断(m%n,n)是必胜还是必败,因此我们也已经可以确定(m,n)的先取者已经胜了。
while(scanf("%d%d",&a,&b)&&(a||b))
{
stanwin=true;
while(1)
{
if(a>b) swap(a,b);
if((b/a>=2)||(b%a==0)||(a==0)) {output(); break;}
b=b-a;
stanwin=!stanwin;
}
}
return 0;
}