HDU - 5973 Game of Taking Stones 威佐夫博弈+高精度

威佐夫博弈的模板题

判断(√5-1)/2 *(b-a)是否和a相等

但是数据很大,用Java开了高精度,二分求√5的值

import java.util.*;
import java.math.*;


public class Main 
{
	public static void main(String args[])
	{
		Scanner cin=new Scanner(System.in);
		BigDecimal l=BigDecimal.valueOf(2);
		BigDecimal r=BigDecimal.valueOf(3);
		BigDecimal tmp=BigDecimal.valueOf(1);
		for(int i=1;i<=500;i++)
		{
			BigDecimal mid=l.add(r).divide(BigDecimal.valueOf(2));
			tmp=mid;
			if(mid.multiply(mid).compareTo(BigDecimal.valueOf(5))<0)
			{
				l=mid;
			}
			else
			{
				r=mid;
			}
		}
		tmp=tmp.add(BigDecimal.valueOf(1));
		tmp=tmp.divide(BigDecimal.valueOf(2));
		BigDecimal a,b;
		while(cin.hasNext())
		{
			a=cin.nextBigDecimal();
			b=cin.nextBigDecimal();
			if(a.compareTo(b)>0)
			{
				BigDecimal t=a;
				a=b;
				b=t;
			}
			BigDecimal k=b.subtract(a);
			k=k.multiply(tmp);
			k=k.setScale(0,BigDecimal.ROUND_DOWN);
			if(k.compareTo(a)==0)
			{
				System.out.println(0);
			}
			else
			{
				System.out.println(1);
			}
		}
	}
}

 

你可能感兴趣的:(hdu,=====基础算法=====)