PAT Basic 1011. A+B 和 C
PAT Basic 1011. A+B 和 C
1. 题目描述:
给定区间 [\(−2^{31},2^{31}\)] 内的 3 个整数\(A\)、\(B\) 和 \(C\),请判断 \(A+B\) 是否大于 \(C\)。
2. 输入格式:
输入第 1 行给出正整数 \(T\) (\(≤10\)),是测试用例的个数。随后给出 \(T\) 组测试用例,每组占一行,顺序给出 \(A\)、\(B\) 和 \(C\)。整数间以空格分隔。
3. 输出格式:
对每组测试用例,在一行中输出 Case #X: true
如果 \(A+B>C\),否则输出 Case #X: false
,其中 X
是测试用例的编号(从 1 开始)。
4. 输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
5. 输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
6. 性能要求:
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB
思路:
主要考察整数数据类型的使用,这里题目描述给出了上下限\(\pm 2^{31}\),因为涉及到两数相加,所以最终的上下限为\(\pm2^{32}\),至少需要33个数据位和1个符号位。这里PAT的判题系统运行在linux上,其long类型占8个字节,共64位已经满足需求了。
My Code:
#include <stdio.h>
int main(void)
{
int count = 0;
//long long int _A, _B, _C;
long int _A, _B, _C;
scanf("%d", &count);
for(int i = 1; i <= count; i++)
{
//scanf("%lld%lld%lld", &_A, &_B, &_C);
scanf("%ld%ld%ld", &_A, &_B, &_C);
printf("Case #%d: %s\n", i, (_A+_B>_C? "true" : "false"));
}
return 0;
}