#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
int flag;
for(int i=1;i<=t;i++)
{
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
long long res=a+b;
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;
if(flag==true)
printf("Case #%d: true\n",i);
else
printf("Case #%d: false\n",i);
}
return 0;
}
两数之和要用long long 存储,不然会出错
首先正溢出,long long的范围是[-2^63,2^63) 2*2^63-2*1
当A+B>=2^63时,显然A+B>C成立,但A+B会溢出(2^64-2)%(2^64)=-2
然后负溢出 A+B<-2^63,显然A+B<C成立,(-2^64)%2^64=0