PAT甲级-模拟类型-1065 A+B and C (64bit)解题思路

1065 A+B and C (64bit) (20 分)

在这里插入图片描述

思路

抓住细节,long long的范围为 [ − 2 63 , 2 63 ) [-2^{63},2^{63}) [263,263),但题目给出的范是 [ − 2 63 , 2 63 ] [-2^{63},2^{63}] [263,263],如果题目测试数据使用到 2 63 2^{63} 263则要使用大整数相加算法,就比较麻烦了,还好没有。

所以本题的思路,使用long long类型,对越界进行讨论即可。

代码

#include <bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n,i,j;
    long long a,b,c;
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    
    
        scanf("%lld%lld%lld",&a,&b,&c);  

        long long res  = a+b;
        if (a>0 && b>0 && res <= 0 )
            printf("Case #%d: true\n",i+1);
        else if (a<0 && b<0 && res >= 0 )
            printf("Case #%d: false\n",i+1);
        else if(res > c)
            printf("Case #%d: true\n",i+1);
        else
            printf("Case #%d: false\n",i+1);

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43999137/article/details/114004849