1065. A+B and C (64bit) (20)
時間限制100 ms
內存限制65536 kB
代碼長度限制16000 B
Given three integers A, B and C in [-26^3, 26^3], you are supposed to tell whether A+B > C.
Input Specification:
The first line of the input gives the positive number of test cases, T (<=10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.
Output Specification:
For each test case, output in one line “Case #X: true” if A+B>C, or “Case #X: false” otherwise, where X is the case number (starting from 1).
Sample Input:
3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0
Sample Output:
Case #1: false
Case #2: true
Case #3: false
用邏輯判斷a和b的情況來規避運算溢出問題
#include
int main()
{
long long a, b, c;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i){
scanf("%lld%lld%lld", &a, &b, &c);
bool flag = true;
if (a >= 0 && b >= 0){
if (c >= 0){
flag = a > c - b;
}
}else{
if ((a >= 0 && b < 0) || (a < 0 && b >= 0)){
flag = a + b > c;
}else{
if (c >= 0){
flag = false;
}else{
flag = a > c - b;
}
}
}
printf("Case #%d: %s\n", i, flag ? "true" : "false");
}
return 0;
}