ACM-ICPC 2018 焦作賽區網路預賽 J
阿新 • • 發佈:2019-02-03
題意: (bzoj1213原題)讓你分別判斷n或(n-1)*n/2是否是完全平方數。
分析:二分即可,或者(牛頓迭代法求平方根),本質都是一樣的,都是二分的思想,很久沒寫Java了,手生了。
程式碼:
import java.util.Scanner; import java.math.BigInteger; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t=sc.nextInt(); for(int i=1;i<=t;i++) { String str = sc.next(); BigInteger n = new BigInteger(str); BigInteger m = n.multiply(n.subtract(BigInteger.ONE)).shiftRight(1); boolean x=is(n),y=is(m); if(x&&y) System.out.println("Arena of Valor"); else if( x && (!y) ) System.out.println("Hearth Stone"); else if( (!x) && y ) System.out.println("Clash Royale"); else System.out.println("League of Legends"); } } public static boolean is(BigInteger n) { BigInteger l = BigInteger.ZERO,r=n; while(l.compareTo(r)<=0) { BigInteger m=l.add(r).shiftRight(1); int res=m.multiply(m).compareTo(n); if(res==0) return true; else if(res>0) r=m.subtract(BigInteger.ONE); else l=m.add(BigInteger.ONE); } return false; } }