题目给出4根长度在0~2^63-1的木棍,问能否组成四边形。
四边形有很多种。。。正方形,长方形,菱形,梯形……枚举所有情况实在太复杂
不过组成四边形的充要条件与组成三角形的充要条件是类似的:最大边>其余三边的和
本来2^63-1是刚好在long long的范围内的,三边加起来就会超过这个范围
正好今天刚学会用java大数就做了一个。。。用的非常粗糙-_-#
注意如果有木棍长度为0是一定不能组成四边形的……
还有java交程序类名是Main……-_-#
1 import java.io.*; 2 import java.math.*; 3 import java.util.*; 4 import java.text.*; 5 6 public class Main 7 { 8 public static void main(String[] args) 9 {10 Scanner cin = new Scanner(new BufferedInputStream(System.in));11 int T;12 T = cin.nextInt();13 for(int i = 0; i < T; i++){14 BigInteger a, b, c, d, zero, max;15 char f;16 boolean flag = false;17 a = cin.nextBigInteger();18 b = cin.nextBigInteger();19 c = cin.nextBigInteger();20 d = cin.nextBigInteger();21 zero = BigInteger.valueOf(0);22 if(a.compareTo(zero) == 0 || b.compareTo(zero) == 0 || c.compareTo(zero) == 0 || d.compareTo(zero) == 0){23 System.out.println("No");24 continue;25 }26 max = a; f = 'a';27 if(max.compareTo(b) < 0) {max = b; f = 'b';}28 if(max.compareTo(c) < 0) {max = c; f = 'c';}29 if(max.compareTo(d) < 0) {max = d; f = 'd';}30 if(f == 'a' && (a.compareTo( b.add(c).add(d) ) < 0) ) flag = true;31 if(f == 'b' && (b.compareTo( a.add(c).add(d) ) < 0) ) flag = true;32 if(f == 'c' && (c.compareTo( a.add(b).add(d) ) < 0) ) flag = true;33 if(f == 'd' && (d.compareTo( a.add(b).add(c) ) < 0) ) flag = true;34 if(flag == true) System.out.println("Yes");35 else System.out.println("No");36 }37 }38 }