程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 1065. A+B and C (64bit) (20)【邏輯】——PAT (Advanced Level) Practise

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

編輯:C++入門知識

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 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved