PAT-A-1065 A+B and C

Given three integers A, B and C in [−2^63,2^63], 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:

1
2
3
4
3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0

Sample Output:

1
2
3
Case #1: false
Case #2: true
Case #3: false

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>

using namespace std;
typedef long long LL;
int main(){

int n,count=1;
scanf("%d",&n);
LL a,b,c;
bool flag=false;
while(n--){
scanf("%lld%lld%lld",&a,&b,&c);
LL res =a+b;
//若两个数都为正,结果为负则为溢出,两数之和必定大于c;下面同理
if(a>0&&b>0&&res<0)flag=true;//正溢出
else if(a<0&&b<0&&res>=0)flag=false;//注意负溢出包括0
else if(res>c)flag =true;
else flag =false;

if(flag){
//a+b>c
printf("Case #%d: true\n",count++);
}else{
//a+b<c
printf("Case #%d: false\n",count++);
}

}
return 0;
}

----\(˙<>˙)/----赞赏一下吧~