题目
给定三条边,请你判断一下能不能组成一个三角形。
输入描述:输入包含多组数据,每组数据包含三个正整数a、b、c(1 ≤ a, b, c ≤ 10 ^ 100)。
输出描述:对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。
示例1
输入
1 2 3
2 2 2
输出
No
Yes
思路
两边之和大于第三边就可判断,需要注意的是输入描述,给定a,b,c范围较大,要选择合适的数据类型。
此题推荐double类型,double类型数据范围±1.7×10^308,可覆盖大部分数据问题;
也可用BigDecimal数据类型,两者精度要求不同,BigDecimal精度更高,但应用较难。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
double a = in.nextDouble();
double b = in.nextDouble();
double c = in.nextDouble();
if(a + b > c && a + c > b && b + c > a) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
}
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
BigDecimal a = sc.nextBigDecimal();
BigDecimal b = sc.nextBigDecimal();
BigDecimal c = sc.nextBigDecimal();
if(a.add(b).compareTo(c) > 0 && a.add(c).compareTo(b) > 0 && b.add(c).compareTo(a) > 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
}