思路:
1、由于long long的范围是[-2^63,2^63),因此题目中给出的两个数a,b相加有可能溢出。
2、当a+b>=2^63
显然有a+b>c成立,假设a,b都取最大值2^63-1则a+b = 2^64-2,则溢出后为(2^64-2)% 2^64 = -2 , 则当a>0,b>0,c<0时发生正溢出
3、同理当a,b都取最小值时,溢出值为0,则当a<0,b<0,c>=0,时发生负溢出
4、不发生溢出的情况直接进行比较即可
#include<iostream>
using namespace std;
int main()
{
int T;
long long a,b,c;
cin>>T;
for(int i=1;i<=T;i++)
{
cin>>a>>b>>c;
bool flag;
long long temp = a+b;
if(a>0 && b>0 && temp<0)//正溢出
flag = true;
else if(a<0 && b<0 && temp>=0)//负溢出
flag = false;
else if(temp <= c)
flag = false;
else
flag = true;
if(flag == true)
cout<<"Case #"<<i<<": true"<<endl;
else
cout<<"Case #"<<i<<": false"<<endl;
}
return 0;
}