Given three integers A, B and C in [-263, 263], 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无法处理的情况就是这个值溢出了。所以单独对这个值正数方向溢出和负数方向溢出进行讨论。要注意的是这里溢出时a+b必须要进行赋值。代码是直接在妹子的代码基础上改的,所以C和C++交互,风格迥异,能看就行。
此外需要一提的是在ACM竞赛中能带纸质材料,所以邝斌大神的模板中就有大整数的处理,并且封装成了类。如果采用C++写代码,平时可以考虑抄。
#include<stdio.h>
#include<iostream>
using namespace std;
int main() {
long long a, b, c;
int n,i;
scanf("%d", &n);
long long d;
for (i = 0; i < n; ++i) {
//scanf("%lld%lld%lld", &a, &b, &c);
cin >> a >> b >> c;
d = a + b;
//a+bメ邉・
if (a<0&&b<0&&d>=0)
{
printf("Case #%d: false\n", i + 1);
}
else if(a>0&&b>0&&d<=0)
//a+bメ邉・
{
printf("Case #%d: true\n", i + 1);
}
//printf("Case #%d: true\n", i + 1);
else
{
if (a + b > c)
printf("Case #%d: true\n", i + 1);
else
printf("Case #%d: false\n", i + 1);
}
}
return 0;
}