PAT甲级刷题笔记:
题号:1065 A+B and C (64bit) (20 分)
题目:
Given three integers A, B and C in [−263 ,263 ], you are supposed to tell whether A+B>C.
主要思路:
因为题目给定A,B范围为正负2的63次方数量级
所以判断A+B要考虑溢出,最近正好在学计组,学到了2个正数加起来为负数,或者两个负数加起来为正数,则是溢出
步骤
- 判断四次(有四种条件)分别为,正溢出时A+B一定大于C,负溢出时候A+B一定小于C,
- 小技巧就是先弄一个变量,让他等于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;
}
学到的知识:
- 学到的bool类型的变量的运用方式,
- 学会了如何判断正溢出和负溢出
- long long int 的范围
今天看到了中科大博士生的论文致谢:还是要把书读下去,然后走出去,不枉活这一世。加油!!!
今天好累,可能写不出太有用的东西了,晚安!