规则: 有两堆物品,两人轮流从一堆取任意个数或从两堆取出等量的石子,取完胜
用(
a
k
,
b
k
a_k,b_k
ak,bk)表示奇异局势,我们可以列出一些奇异局势
(0,0),(1,2),(3,5),(4,7),(6,10)
a
k
a_k
ak是未在前面出现过的最小自然数,
b
k
=
a
k
+
k
b_k = a_k + k
bk=ak+k 。
给定任意的局势,判定是否是奇异:求出a,b差值k,若a = k * (1+sqrt(5)) / 2,该局势为奇异局势
/*有两堆物品,两人轮流从一堆取任意个数或从两堆取出等量的石子,取完胜
给定任意的局势,判定是否是奇异:
求出a,b差值k,若a = k * (1+sqrt(5)) / 2,该局势为奇异局势
*/
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int a,b;
while( scanf("%d%d",&a,&b) != EOF )
{
if( a > b ) swap(a,b);
int k = b - a;
double t = ( 1 + sqrt(5) ) / 2;
int c = k * t;
if( c == a ) printf("0\n");
else printf("1\n");
}
return 0;
}