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 Ttest 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 是否 大于 c,这里牵扯一个越界问题,64位(long long int)整数来说,补码的范围为[-2^63,2^63),最后这个数是取不到的,但是这个题好像没有出这个点难为人,那就很简单了,把一个大数分解成两部分不就ok了吗,直接莽就行~
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
int t;
cin >> t;
long long int temp = pow(2, 60);
for(int i = 1; i <= t; i++){
long long int a, b, c;
scanf("%lld %lld %lld", &a, &b, &c);
long long int pre_a = a / temp;
long long int back_a = a % temp;
long long int pre_b = b / temp;
long long int back_b = b % temp;
long long int pre_c = c / temp;
long long int back_c = c % temp;
if(pre_a + pre_b > pre_c){
printf("Case #%d: true\n", i);
}else if (pre_a + pre_b == pre_c && back_a + back_b > back_c)
{
printf("Case #%d: true\n", i);
}else
{
printf("Case #%d: false\n", i);
}
}
return 0;
}