【几何 大数】【HDOJ】5655 CA Loves Stick

http://acm.hdu.edu.cn/showproblem.php?pid=5655

 

题目给出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 }

 

posted @ 2016-04-02 23:52  快扶哀家去刷题  阅读(169)  评论(0编辑  收藏  举报