1065 A+B and C (64bit) (20 分)

PAT甲级刷题笔记:

题号:1065 A+B and C (64bit) (20 分)


题目:

Given three integers A, B and C in [−2​63 ,2​63 ], you are supposed to tell whether A+B>C.
在这里插入图片描述


主要思路:

因为题目给定A,B范围为正负2的63次方数量级 所以判断A+B要考虑溢出,最近正好在学计组,学到了2个正数加起来为负数,或者两个负数加起来为正数,则是溢出

步骤

  1. 判断四次(有四种条件)分别为,正溢出时A+B一定大于C,负溢出时候A+B一定小于C,
  2. 小技巧就是先弄一个变量,让他等于A+B这样判断比较方便。

解决方案:

#include<iostream>
int main(){
    int n;
    scanf("%d",&n);
    long long int A, B, C;
    long long int sum;
    bool flag;
    for(int i = 1;i <= n;i++){
        scanf("%lld %lld %lld", &A, &B, &C);
        sum = A + B;
		if(A > 0 && B > 0 && sum < 0)
            flag = true;
        else if(A < 0 && B < 0 && sum >= 0)
           flag = false;
        else if(sum > C)
        	flag = true;
        else
        	flag = false;
        if(flag == true)
        	printf("Case #%d: true\n",i);
        if(flag == false)
        	printf("Case #%d: false\n",i);
    }
    return 0;
}

学到的知识:

  1. 学到的bool类型的变量的运用方式,
  2. 学会了如何判断正溢出和负溢出
  3. long long int 的范围
    今天看到了中科大博士生的论文致谢:还是要把书读下去,然后走出去,不枉活这一世。加油!!!
    今天好累,可能写不出太有用的东西了,晚安!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值