题目概述:
我们应该知道,int是32位的(9位十进制左右),longlong是64位的(19位十进制左右),因此这道题两个64位的数相加有一定的可能会溢出。这道题考的就是溢出后的值是多少:
假设A和B都是longlong类型的,他们溢出当且仅当他们同号:
1&#xff09;如果A和B都是正的&#xff0c;那么sum<0时表示溢出
2&#xff09;如果A和B都是负的&#xff0c;那么sum >&#61; 0 时表示溢出&#xff08;特别注意这个等于号)
根据以上规则&#xff0c;这道题就可以轻易解决了&#xff1a;
#include
using namespace std;int main()
{long long a, b, c;int t;scanf("%d", &t);for(int i &#61; 1; i <&#61; t; i&#43;&#43;){scanf("%lld %lld %lld", &a, &b, &c);long long sum &#61; a &#43; b;if(a > 0 && b > 0 && sum < 0)printf("Case #%d: true\n", i);else if(a < 0 && b < 0 && sum >&#61; 0)printf("Case #%d: false\n", i);else if(sum > c)printf("Case #%d: true\n", i);else printf("Case #%d: false\n", i);}return 0;
}
总结&#xff1a;
超大数溢出。