正溢出:两个整数相加的结果超过了数据类型所能表示的最大范围,结果为负数
负溢出:两个负数相加的结果超过了数据类型所能表示的最小范围,结果为正数(包括0)
PAT 1065 https://pintia.cn/problem-sets/994805342720868352/problems/994805406352654336
看到这道题的第一反应是大数字符串,但是想了想好像会很麻烦
后来才了解到可以用大数的溢出来处理
且审题 c的范围是可以用long long的
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
int i;
for(i=1;i<=t;i++)
{
//不用string大数运算,string a,b;
long long a,b,c;//审题 c在long long 范围内
cin>>a>>b>>c;
long long ans;
bool flag=true;
ans=a+b;
if(a>0&&b>0&&ans<=0)
flag=true;
else if(a<0&&b<0&&ans>=0)
flag=false;
else
{
if(ans<=c)
flag=false;
}
//if(a[0]=='-')
printf("Case #%d: ",i);
if(flag)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
}
return 0;
}