package com.heu.wsq.pta.a1011;
import java.util.Scanner;
/**
* 1011 A+B 和 C (15分)
* @author wsq
* @date 2020/12/5
* 给定区间 [−2*31, 2*31]内的3个整数 A、B 和 C,请判断 A+B 是否大于 C。
*
* 输入格式:
* 输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
*
* 输出格式:
* 对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
*
* 输入样例:
* 4
* 1 2 3
* 2 3 4
* 2147483647 0 2147483646
* 0 -2147483648 -2147483647
*
* 输出样例:
* Case #1: false
* Case #2: true
* Case #3: true
* Case #4: false
*/
public class Main {
/**
* 网上看了很多人都是使用long long 或者 Double去解决数组越界的问题,这种方式简单,但是没去真正去理解只能去在越界的条件下去完成任务
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for (int i = 0; i < n; i++) {
int[] arr = new int[3];
for (int j = 0; j < 3; j++) {
arr[j] = in.nextInt();
}
if(arr[0] > 0 && arr[1] > 0 && Integer.MAX_VALUE - arr[0] < arr[1]){
System.out.println("Case #"+ (i+1) +": " + "true");
continue;
}
if(arr[0] < 0 && arr[1] < 0 && Integer.MIN_VALUE - arr[0] > arr[1]){
System.out.println("Case #"+ (i+1) +": " + "false");
continue;
}
if(arr[0] + arr[1] > arr[2]){
System.out.println("Case #"+ (i+1) +": " + "true");
}else{
System.out.println("Case #"+ (i+1) +": " + "false");
}
}
}
}
1011 A+B 和 C(使用Int越界约束下完成)
最新推荐文章于 2022-01-22 23:04:35 发布