PAT乙级1011——A+B和C
题目:
题目详情 - 1011 A+B 和 C (15 分) (pintia.cn)
这道题真的把我给整麻了。好简单的一道题。好麻。看了好久终于发现自己哪里搞错了,慢慢说。
首先审题:很简单,要求我们输入n组数字(n是用户自定义的整数),然后每组数字包含三个在给定区间 [−2^31,2^31] 内的 整数
要求我们比较前两个数字的和与第三个数字的大小
题目很简单,有手就行。这里主要讲(我觉得是坑的)几个坑:
1.关于结果的输出格式:这个我有点迷惑。我的理解是,先让用户一下子全部输入一个n+n组数字,然后再一下子输出n行结果。那么这时候就需要当用户每输入一次的时候,我们就将比较的结果记录下来(记录到一个数组里面,可以用1和0代表大于和不大于),最后按照数组里的结果,再输出Case那些语句。但是再看过一些答案之后,我发现,答案的做法就是用户每输入一行数字,我们就直接将比较得出来的结果直接输出。也就是,输出的结果是这样:
而不是这样:
我震惊了。原来是我刷题少了,输出还可以这样!
2.关于数据类型的设定:这里我要补充一下基本功:
unsigned int (unsigned long)
-
4字节8位可表达位数:2^32=42 9496 7296
-
范围:0 ~ 42 9496 7295 (42*10^8)
int (long)
-
4字节8位可表达位数:2^32=42 9496 7296
-
范围:-21 4748 3648 ~ 21 4748 3647 (21*10^8)
long long (__int64)
-
8字节8位可表达位数:2^64=1844 6744 0737 0960 0000
-
范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)
unsigned long (unsigned __int64)
-
8字节8位可表达位数:2^64=1844 6744 0737 0960 0000
-
范围:0 ~ 1844 6744 0737 0955 1615 (1844*10^16)
两个超级大的数加起来会超过int的范围,所以这里用long
代码:
#include <iostream> using namespace std; int main() { int t; cin >>t; long a,b,c; for(int i=1;i<=t;i++) { cin >> a >> b >> c; cout << "Case #"<< i <<": " << (a + b > c ? "true" : "false")<< endl; } system("pause"); return 0; }
这里插一句为什么我之前一直报错呢:
服气了,居然看了好几遍没有看出来,以后不犯了
本文来自博客园,作者:EowynTang,转载请注明原文链接:https://www.cnblogs.com/tangcoder/p/15667556.html