题目:点击打开链接
题意: (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;
}
}