进制转换
1. 原文
给定区间 [−$2^{31}$,$2^{31}$] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。
输入格式:
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出 Case #X: true
如果 A+B>C,否则输出 Case #X: false
,其中 X
是测试用例的编号(从 1 开始)。
输入样例:
1 2 3 4 5
| 4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647
|
输出样例:
1 2 3 4
| Case #1: false Case #2: true Case #3: true Case #4: false
|
2. 解析思路
int表示范围为[−$2^{31}$,$2^{31}$],两个int相加可能超过范围表示为负数。
3. AC代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<stdio.h> int main(){ int n; scanf("%d",&n); long long a,b,c,sum; for(int i=1;i<=n;i++){ scanf("%lld%lld%lld",&a,&b,&c); printf("Case #%d: ", i); sum=a+b; if (a>0&&b>0&&sum<0) { printf("true"); }else if(a<0&&b<0&&sum>=0){ printf("false"); }else if(sum>c){ printf("true"); }else{ printf("false"); } printf("\n"); } return 0; }
|