考察数字溢出的情况,其实还是比较容易的。但是需要一个先修知识,但是这里面还是有一个坑点,我稍微记录下来。我还以为这道题目我是秒过的。
关于数字的溢出:
正溢出:两个整数相加的结果超过了数据类型所能表示的最大范围,结果为负数
负溢出:两个负数相加的结果超过了数据类型所能表示的最小范围,结果为正数(包括0)
读入问题,对就是读入问题:
用cin读入无法完全读入,如果用cin读入的话,读入好像存在了错误,我输入一个abc,结果输出了两个答案,可能这就是那一个测试点吧
cin读入的判题结果:
完整代码:
#include <iostream>
using namespace std;
typedef long long ll;
int main(){
int n;
cin>>n;
int Tcase=1;
//然后就是溢出的数的判断了
while(n--){
ll a,b,c,res;
scanf("%lld%lld%lld",&a,&b,&c);
res=a+b;
//a+b都已经超出了书的范围了,那么肯定是大于c啊
bool flag;
//a+b<c.那么就是错误
if(a>0&&b>0&&res<0) flag=true;
else if(a<0&&b<0&&res>=0) flag=false;
//无溢出的情况
else if(res>c) flag=true;
else flag=false;
//四种情况按照格式去进行输出一下就可以了
cout<<"Case #"<<Tcase++<<(flag?": true":": false")<<endl;
}
return 0;
}