zoukankan      html  css  js  c++  java
  • PAT A1065 A+B and C (64bit) [硬核模拟]

    题目描述

    链接
    判断是否A+B>C

    分析

    • 注意溢出问题的分析
      因为A、B的大小为[-2^63, 2^63],用long long 存储A和B的值,以及他们相加的值sum:
      如果A > 0, B < 0 或者 A < 0, B > 0,sum是不可能溢出的
      如果A > 0, B > 0,sum可能会溢出,sum范围理应为(0, 2^64 – 2],溢出得到的结果应该是[-2^63, -2]是个负数,所以sum < 0时候说明溢出了
      如果A < 0, B < 0,sum可能会溢出,同理,sum溢出后结果是大于0的,所以sum > 0 说明溢出了

    代码

    #include <cstdio>
    using namespace std;
    int main() {
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++) {
            long long a, b, c;
            scanf("%lld %lld %lld", &a, &b, &c);
            long long sum = a + b;
            if(a > 0 && b > 0 && sum < 0) {  //a > 0 b>0 可能会溢出,结果为负数
                printf("Case #%d: true
    ", i + 1); //溢出得都超过longlong了,肯定就大于c了
            } else if(a < 0 && b < 0 && sum >= 0){
                printf("Case #%d: false
    ", i + 1); //溢出得有小于longlong的最小值的,肯定就小于c了
            } else if(sum > c) {
                printf("Case #%d: true
    ", i + 1);
            } else {
                printf("Case #%d: false
    ", i + 1);
            }
        }
        return 0;
    }
    
  • 相关阅读:
    MVC之路由规则 (自定义,约束,debug)
    MCV之行为
    mvc之页面强类型
    Jquery异步上传图片
    三层VS控制器
    Oracle 表分区
    C#编写的通过汉字得到拼音和五笔码
    MYSQL存储过程学习
    Sina App Engine(SAE)入门教程(9)- SaeMail(邮件)使用
    状态CSS
  • 原文地址:https://www.cnblogs.com/doragd/p/11386533.html
Copyright © 2011-2022 走看看