首先有SG(x,y)=mex(SG(x-a,y-a),SG(x-a,y),SG(x,y-a)),其中SG(0,0)=0,打表发现(1,2)(3,5)(4,7)(6,10)(8,13)……时SG为0(即必败),假设第一项是ai,第二项是bi,很容易发现:1.bi=ai+i,2.ai=mex(bi,bj,0)。
通过暴力可以求出$\sum\limits_{i=10001}^{20000}ai/i/10000=1.61800$,而这个数也就是黄金分割比,因此可以得出$ai=(1+\sqrt{5})/2\cdot i$,据此判断a和$((1+\sqrt{5})/2)\cdot (b-a))$是否相等即可。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 using namespace std; 5 int a,b; 6 int main(){ 7 while (scanf("%d%d",&a,&b)!=EOF){ 8 if (a>b)swap(a,b); 9 printf("%d\n",(floor((b-a)*(1+sqrt(5.0))/2)!=a)); 10 } 11 }