1065 A+B and C (64bit) (20 分)
思路
抓住细节,long long的范围为 [ − 2 63 , 2 63 ) [-2^{63},2^{63}) [−263,263),但题目给出的范是 [ − 2 63 , 2 63 ] [-2^{63},2^{63}] [−263,263],如果题目测试数据使用到 2 63 2^{63} 263则要使用大整数相加算法,就比较麻烦了,还好没有。
所以本题的思路,使用long long类型,对越界进行讨论即可。
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j;
long long a,b,c;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%lld%lld%lld",&a,&b,&c);
long long res = a+b;
if (a>0 && b>0 && res <= 0 )
printf("Case #%d: true\n",i+1);
else if (a<0 && b<0 && res >= 0 )
printf("Case #%d: false\n",i+1);
else if(res > c)
printf("Case #%d: true\n",i+1);
else
printf("Case #%d: false\n",i+1);
}
}