A1065:A+B and C(20')

思路:用long long型存数据。

注意:要考虑溢出问题,正数+正数,负数+负数会造成溢出。即:A>0且B>0,A+B范围应该在[-2^63,-2],A+B如果<0,就是正确的,因为2^63在long long型里会变成-2^63。但是,A<0且B<0,A+B范围应该在[0,2^63),A+B如果>=0,就是错误了。A+B 只有赋值后才可以检测是否溢出,所以A+B的值要存入一个long long型中,不能直接在if语句里进行判断,否则会造成数据错误。

代码:

#include<cstdio>
int main(){
    long long a,b,c;
    int T,i;
    scanf("%d",&T);
    for(i=0;i<T;i++){
        scanf("%lld%lld%lld",&a,&b,&c);  //输入long long 型
        long long s=a+b;
        if(a>0&&b>0&&s<0) printf("Case #%d: true\n",i+1);
        else if(a<0&&b<0&&s>=0) printf("Case #%d: false\n",i+1);
        else if(s>c) printf("Case #%d: true\n",i+1); //输出是1到T
        else printf("Case #%d: false\n",i+1);
    }
    return 0;
}

二刷代码:

#include<stdio.h>
int main(){
    int n;
    long long A,B,C,D;
    scanf("%d",&n);
    for(int i = 0;i < n;i ++){
        scanf("%lld%lld%lld",&A,&B,&C);
        D = A+B;
        if(A>0 && B>0 && D<=0){
            printf("Case #%d: true\n",i+1);
        }
        else if(A<0 && B<0 && D>=0){
            printf("Case #%d: false\n",i+1);
        }
        else if(D > C){
            printf("Case #%d: true\n",i+1);
        }
        else printf("Case #%d: false\n",i+1);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务