2 1 1 1 1 1 1 9 2
Yes No
如果边里面有0,则直接输出No,因为组不成四边形,如果有一条边的长度大于等于其他三条边的和,则输出No,否则输出Yes,long long都会爆,用double会损失
精度一样不行,还是JAVA大数比较方便
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String [] args) { Scanner in = new Scanner(System.in); BigInteger num[] = new BigInteger[4]; int T = in.nextInt(); while (T-->0) { boolean flag = true; BigInteger sum = BigInteger.ZERO; for (int i = 0; i < 4; i++) { num[i] = in.nextBigInteger(); if (num[i].equals(BigInteger.ZERO)) { flag = false; } sum = sum.add(num[i]); } if (!flag) { System.out.println("No"); continue; } for (int i = 0; i < 4; i++) { if (sum.subtract(num[i]).compareTo(num[i]) <= 0) { flag = false; break; } } if (flag) { System.out.println("Yes"); } else { System.out.println("No"); } } in.close(); } }