|
题目大意
给出A B C三个数,判断 A+B > C是否成立。思路解析
利用溢出特性更简便:设d = A + B;
当A*B < 0时,正常计算判断即可;
当a > 0 && b > 0 && d < 0时,说明发生了上溢,一定大于C;
当a < 0 && b < 0 && d >= 0时(注意带等号),说明发生了下溢,一定小于C;
示例代码
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
long long a, b, c;
scanf("%lld %lld %lld", &a, &b, &c);
printf("Case #%d: ", i + 1);
long long d = a + b;
if (a > 0 && b > 0 && d <= 0) {
printf("true\n");
}
else if (a < 0 && b < 0 && d >= 0) {
printf("false\n");
}
else if(d > c){
printf("true\n");
}
else {
printf("false\n");
}
}
return 0;
}