自以为对二进制有很深的理解,面对这种水题,切了好久。。。
#include <stdio.h>
#include <climits>
typedef long long ll;
bool compare(ll a, ll b, ll c)//防止大数相加溢出
{
if (a > 0 && b > 0)
{
if (a > LLONG_MAX - b)
return true;
}
if (a < 0 && b < 0)
{
if (a < LLONG_MIN - b)
return false;
}
return a + b>c;
}
int main()
{
int num=0;
scanf("%d", &num);
int t = 0;
cout << LLONG_MAX << endl;
while (num--)
{
t++;
ll a, b, c;
scanf("%lld %lld %lld", &a, &b, &c);
printf("Case #%d: %s\n",t, compare(a,b,c)? "true" : "false");
}
return 0;
}