PAT1011 A+B 和 C Java 脱坑手记

PAT1011 A+B 和 C Java 脱坑手记

题目分析

题目
根据题目的含义是要比较多组 A+B 与 C的大小关系
重点 在整数范围中 就是 int 类型的范围
那就存在一个问题 A+B 越出上界(2147483647) 和 越出下界(-2147483648)

解决方案

一、java 中有64位长度的数据类型 long,可以直接进行 A+B>C比较操作
(不建议 本身就是学习思考的题目 越界也就是题目考点)

二、通过思考可以想到,A+B 超越上界时,只有可能是两者都 >= 0 ,并且超越上界后会从下界开始向上加 必然小于0,此时 C在上界范围内必然是 小于 A+B。
同理,A+B 超越下界时,只有可能是两者都 <= 0 ,并且超越下界后会从上界开始向上加 必然大于0,此时 C在下界范围以上必然是 大于 A+B。
其他时候,A+B值必然在(-2147483648 ~ 2147483647)之间,直接进行 A+B>C的比较

代码

一、直接用long数据类型

public static Boolean judge(long A, long B, long C) {
        return A + B > C;
    }

主程序:

 public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int T = input.nextInt(); //正整数 T (≤10)
        int count = 0;

        while (count < T) {
            //获取测试用例中A B C 通过调用方法进行判断 A+B>C 是否为真
            long A = input.nextLong();
            long B = input.nextLong();
            long C = input.nextLong();
            System.out.println("Case #" + ++count + ": " + judge(A,B,C) );
        }
    }

    public static Boolean judge(long A,long B,long C) {
        return A + B > C;
    }

二、通过int 找出关系判断

    //        int 数值范围  2147483647  -2147483648
    public static Boolean judge(int A, int B, int C) {
        //当A+B超出int 上界限2147483647后会变为从-2147483648开始加
        if (A >= 0 && B >= 0 && A + B < 0) {
            return true;
        }
        //当A+B超出int 下界限-2147483648后会变为从2147483647开始减
        if (A <= 0 && B <= 0 && A + B > 0) {
            return false;
        }
        return A + B > C;
    }

主程序:

import java.util.Scanner;

public class Main {

    public static Scanner input;

    public static void main(String[] args) {
        input = new Scanner(System.in);
        int T = input.nextInt(); //正整数 T (≤10)
        int count = 0;

        while (count < T) {
            //获取测试用例中A B C 通过调用方法进行判断 A+B>C 是否为真
            int A = input.nextInt();
            int B = input.nextInt();
            int C = input.nextInt();
            System.out.println("Case #" + ++count + ": " + judge(A, B, C));
        }
    }

    //        int 数值范围  2147483647  -2147483648
    public static Boolean judge(int A, int B, int C) {
        //当A+B超出int 上界限2147483647后会变为从-2147483648开始加
        if (A >= 0 && B >= 0 && A + B < 0) {
            return true;
        }
        //当A+B超出int 下界限-2147483648后会变为从2147483647开始减
        if (A <= 0 && B <= 0 && A + B > 0) {
            return false;
        }
        return A + B > C;
    }
}

主程序没啥差别,就当凑字数了。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值