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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。