题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805312417021952
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
对每组测试用例,在一行中输出 Case #X: true
如果 A+B>C,否则输出 Case #X: false
,其中 X
是测试用例的编号(从 1 开始)。
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
Case #1: false
Case #2: true
Case #3: true
Case #4: false
感觉自己的做法偏离了题目的用意,不过也能通过。看数据范围,超过了平常int的范围,本来的思路是根据A、B、C、的正负调整A+B > C的位置关系来判断。例如A、B、C都为正时,改为判断A > C - B,这样就不会导致因为数据太大或太小而溢出。A、B异号时,直接进行计算即可,也不会溢出。其余情况类似处理。
然后我就用了c++中的long long 类型。直接计算即可。
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
short result[T];
for (int i = 0; i < T; ++i) {
long long a, b, c;
cin >> a >> b >> c;
if (a + b > c) {
result[i] = 1;
} else {
result[i] = 0;
}
}
for (int j = 0; j < T; ++j) {
if (result[j] == 1) {
cout << "Case #" << j + 1 << ": true" << endl;
} else {
cout << "Case #" << j + 1 << ": false" << endl;
}
}
return 0;
}
原文:https://www.cnblogs.com/another-7/p/12170170.html