pat甲级1065. A+B and C (64bit) (20)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/80110078

欢迎访问我的pat甲级题解目录哦https://blog.csdn.net/richenyunqi/article/details/79958195

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 0
Sample Output:
Case #1: false
Case #2: true
Case #3: false

算法设计:

在进行加和时可能超出long long的存储范围,需要注意处理溢出的问题。

  1. 当A>0,B>0,A+B<0时为正溢出,此时输出true
  2. 当A<0,B<0,A+B>=0时,为负溢出,此时输出false

c++代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int T;
    scanf("%d",&T);
    long long a,b,c,sum;
    for(int i=1;i<=T;++i){
        scanf("%lld%lld%lld",&a,&b,&c);
        sum=a+b;
        if(a>0&&b>0&&sum<0)
            printf("Case #%d: true\n",i);
        else if(a<0&&b<0&&sum>=0)
            printf("Case #%d: false\n",i);
        else if(sum>c)
            printf("Case #%d: true\n",i);
        else if(sum<=c)
            printf("Case #%d: false\n",i);
    }
    return 0;
}

阅读更多

扫码向博主提问

日沉云起

用最短的代码,写最快的算法
  • 擅长领域:
  • 算法
去开通我的Chat快问
换一批

没有更多推荐了,返回首页