PAT_乙级_1011

来源:互联网 发布:齐天大圣孙悟空知乎 编辑:程序博客网 时间:2024/06/03 05:14

1011. A+B和C (15)
给定区间[-231, 231]内的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开始)。
输入样例: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

思考:
这个题目其实特别简单,唯一需要注意的就是数的范围是-2147483648~2147483648(2的-32次幂到2的32次幂)。如果这个时候仍然用int来定义变量a,b,c的话就容易出错了。因为int类型变量的范围是:-2147483648~2147483648。如果两个数在相加时的结果超出这个范围,那么编译不会出错,但输出的结果会有误。所以这里我用了long型变量来定义题中的三个变量。但严格意义上说,这样仍然不能满足题目需求,严格来说应当将正负数的情况分开,用unsigned来存才是严谨的,但这题可能存在问题,我的代码居然通过了!

代码:

#include <iostream>using namespace std;int main(){        long a,b,c;        int T,i=1;        cin >> T;        while(T--)        {                cin >> a >> b >> c;                if(a+b>c)                        cout<<"Case #"<<i<<": true"<<endl;                else                        cout<<"Case #"<<i<<": false"<<endl;                i++;        }    return 0;}
0 0
原创粉丝点击