1.题目链接。题意简洁:判断n和C(n,2)这两个数是不是都是平方数。
2.由于n很大,但是理论上来说log的算法也是过不掉的啊,只有O(1)的算法才能过。然后尝试着用JAVA写了一发LOG的算法,是可以过的。
import java.util.Scanner;
import java.math.BigInteger;
class Main
{
public static boolean isSquare(BigInteger n) {
BigInteger low = BigInteger.ZERO;
BigInteger high = n;
while (low.compareTo(high) <= 0) {
BigInteger mid = low.add(high).shiftRight(1);
BigInteger square = mid.multiply(mid);
int result = square.compareTo(n);
if (result == 0) {
return true;
} else if (result > 0) {
high = mid.subtract(BigInteger.ONE);
} else {
low = mid.add(BigInteger.ONE);
}
}
return false;
}
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
int T = cin.nextInt();
while(T--!=0)
{
BigInteger n =cin.nextBigInteger();
BigInteger m = n.multiply(n.subtract(BigInteger.ONE)).shiftRight(1);
boolean nIsSquare = isSquare(n);
boolean mIsSquare = isSquare(m);
if (nIsSquare && mIsSquare) {
System.out.println("Arena of Valor");
} else if (nIsSquare && !mIsSquare) {
System.out.println("Hearth Stone");
} else if (!nIsSquare && mIsSquare) {
System.out.println("Clash Royale");
} else {
System.out.println("League of Legends");
}
}
}
}