1065. A+B and C (64bit) (20)【逻辑】——PAT (Advanced Level) Practise

题目信息

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的情况来规避运算溢出问题

AC代码

#include <cstdio>

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;
}

个人游戏推广:
《10云方》与方块来次消除大战!

你可能感兴趣的:(pat,1065)