题意:这个就是威佐夫博弈
难点:数据有点大 所以可以用java 做保留黄金分割 小数点后100位以上 可以用二分求
链接:点击打开链接
代码:
import java.util.*;
import java.math.*;
public class Main{
public static void main(String args[ ]){
Scanner in=new Scanner(System.in);
BigDecimal one=new BigDecimal(1);
BigDecimal two=new BigDecimal(2);
BigDecimal thr=new BigDecimal(3);
BigDecimal five=new BigDecimal(5);
BigDecimal eps=new BigDecimal(0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001);
;
BigDecimal l=two,r=thr;
while(r.subtract(l).compareTo(eps)>0){
BigDecimal mid=l.add(r.subtract(l).divide(two));
if(mid.multiply(mid).compareTo(five)>0){
r=mid;
}
else l=mid;
}
BigDecimal gold=l.add(one).divide(two);
// System.out.println(gold);
while(in.hasNext()){
BigDecimal a=in.nextBigDecimal();
BigDecimal b=in.nextBigDecimal();
if(a.compareTo(b)>0){
BigDecimal c=a;
a=b;
b=c;
}
// System.out.println(a);
// System.out.println(b);
a=a.setScale(0,BigDecimal.ROUND_DOWN);
b=b.subtract(a).multiply(gold).setScale(0, BigDecimal.ROUND_DOWN);
b=b.setScale(0,BigDecimal.ROUND_DOWN);
//b.setScale(0, BigDecimal.ROUND_DOWN);
// System.out.println(a);
// System.out.println(b);
if(a.compareTo(b)==0)
System.out.println(0);
else
System.out.println(1);
}
}
}