恩佐夫博弈+JAVA大数
题意:http://acm.hdu.edu.cn/showproblem.php?pid=5973
根号5复制后200位就行了,因为BigDecimal不支持开根号,除法二分开根。
1 import java.io.FileInputStream; 2 import java.io.PrintStream; 3 import java.math.BigDecimal; 4 import java.math.BigInteger; 5 import java.util.Scanner; 6 import java.util.*; 7 8 public class Main{ 9 // static private final String INPUT="C:\\Users\\13606\\Desktop\\草稿.txt"; 10 // static private final String OUTPUT="C:/output.txt"; 11 public static void main(String[] args){ 12 // FileInputStream instream=null; 13 // PrintStream outstream=null; 14 /* try{ 15 instream=new FileInputStream(INPUT); 16 System.setIn(instream); 17 // outstream=new PrintStream(OUTPUT); 18 // System.setOut(outstream); 19 }catch(Exception e){ 20 System.err.println("Error Occurred."); 21 }*/ 22 23 //======================================================================= 24 Scanner cin=new Scanner(System.in); 25 BigDecimal n,m; 26 while(cin.hasNextBigDecimal()){ 27 n=cin.nextBigDecimal(); 28 m=cin.nextBigDecimal(); 29 BigDecimal a,b; 30 BigDecimal n2=new BigDecimal("2.0"); 31 BigDecimal r=new BigDecimal("3.23606797749978969640917366873127623544061835961152572427089724541052092563780489941441440837878227496950817615077378350425326772444707386358636012153345270886677817319187916581127664532263985658053576135041753378500342339241406444208643253909725259262722887629951740244068161177590890949849237139072972889848208864154268989409913169357701974867888442508975413295618317692149997742480153043411503595766833251249881517813940800056242085524354223555610630634282023409333198293395974635227120134174961420263590473788550438968706113566004575713995659556695691756457822195250006053923123400500928676487552972205676625366607448585350526233067849463342224231763727702663240768010444331582573350589309813622634319868647194698997018081895242644596203452214119223291259819632581110417049580704812040345599494350685555185557251238864165501026243631257102444961878942468290340447471611545572320173767659046091852957560357"); 32 r=r.divide(n2); 33 if(n.compareTo(m)>=0){ 34 BigDecimal c=n.subtract(m); 35 BigDecimal temp=r.multiply(c); 36 BigDecimal ans=temp.setScale(0,BigDecimal.ROUND_FLOOR); 37 if(ans.compareTo(m)==0) 38 System.out.println(0); 39 else 40 System.out.println(1); 41 } 42 else{ 43 BigDecimal c=m.subtract(n); 44 BigDecimal temp=r.multiply(c); 45 BigDecimal ans=temp.setScale(0,BigDecimal.ROUND_FLOOR); 46 if(ans.compareTo(n)==0) 47 System.out.println(0); 48 else 49 System.out.println(1); 50 } 51 } 52 } 53 }