翻译一下
题目描述
给出三个整数,A,B 和 C,范围-2^63 ~ 2^63,你应该给出判断,A+B>C 否?
输入格式
输入的第一行给出了测试实例的个数,T(小于等于10)
下面紧跟10个测试实例,每个单独一行,由三个整数由空格隔开的整数A,B和C组成
输出格式
对于每个测试实例,每行的输出格式,如果 A+B>C,"Case #X: true",否则 "Case #X: false"
#include <iostream>
using namespace std;
int main() {
int T, order = 1;
cin >> T;
long long a, b, c, res;
bool flag;
while (T--) {
cin >> a >> b >> c;
res = a + b;
if (a > 0 && b > 0 && res < 0) {
flag = true;// 正向溢出
}
else if (a < 0 && b < 0 && res >= 0) {
flag = false;// 负向溢出
}
else if (c < res) {
flag = true;
}
else {
flag = false;
}
if (flag == true) {
cout << "Case #" << order++ << ": true" << endl;
}
else {
cout << "Case #" << order++ << ": false" << endl;
}
}
return 0;
}
这道题乍一看很简单,但 long long 的范围是[-2^63, 2^63),题目中给出的两个整数相加可能会溢出(正溢出或者负溢出),直接进行大小判断可能会出现错误,需要先判断正溢或负溢