给出2堆石子 ,有两种操作 ,第一种:在一堆中取出任意数量的石子 ;第二种 :在两堆中取出相同数量的石子 ;
假设 :a = 1 , b = 2 ,很容易可以看出 ,不管怎么拿,先手都输,这种局势叫奇异局势
(0,0) (1,2) (3,5) (4,7) (6,10) ……
每对得差值都是 k (0,1 ,2 ,3 ,4 ,5 ) ,然后 数学分析(迷迷糊糊,具体看百度)
发现(b-a)*1.618 = a
获得 1.618的精确值方法 :double gold =……
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
double gold = (sqrt(5.0)+1)/2;
long long a,b,temp;
while(~scanf("%lld%lld",&a,&b))
{
if(a>b)
swap(a,b);
temp=(long long )((b-a)*gold);
if(temp==a)
printf("0\n");
else
printf("1\n");
}
return 0;
}