1011 A+B 和 C(使用Int越界约束下完成)

这是一个Java编程题目,要求在给定的整数范围内判断三个整数A、B和C是否满足A+B大于C的条件。程序通过读取输入的测试用例,运用条件判断避免整数溢出问题,然后输出结果。示例输入和输出展示了不同情况下的判断结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值