本文主要是介绍ACM-ICPC 2018 焦作赛区网络预赛 J,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:点击打开链接
题意: (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;}
}
这篇关于ACM-ICPC 2018 焦作赛区网络预赛 J的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!