1065. A+B and C (64bit) (20)
时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
HOU, Qiming
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 0Sample Output:
Case #1: false Case #2: true Case #3: false
思路:要考虑溢出问题,若a,b都大于0,a+b溢出就一定会比大,同样a,b小于0且a+b溢出一定比c小。
AC代码:
#define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<string> #include<set> #include<queue> #include<map> using namespace std; #define INF 0x3f3f3f #define N_MAX 1000+5 #define M_MAX 2001 typedef long long ll; ll a, b, c; int main() { int t; cin >> t; int Case=0; while (t--) { Case++; cin >> a >> b >> c; ll res = a + b; if (a > 0 && b > 0 && res <= 0) {//!!!溢出一定比c大 printf("Case #%d: true ", Case); continue; } else if (a < 0 && b < 0 && res>=0) {//!!溢出 printf("Case #%d: false ", Case); continue; } else { if (res > c) printf("Case #%d: true ", Case); else printf("Case #%d: false ", Case); } } return 0; }