您的位置:首页 > 其它

[2096]:小明A+B

2015-11-08 02:02 246 查看
小明A+B

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 32212 Accepted Submission(s): 15330

Problem Description

小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算.

对于大于等于100的整数, 小明仅保留该数的最后两位进行计算, 如果计算结果大于等于100, 那么小明也仅保留计算结果的最后两位.

例如, 对于小明来说:

1) 1234和34是相等的

2) 35+80=15

给定非负整数A和B, 你的任务是代表小明计算出A+B的值.

Input

输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两个非负整数A和B(A和B均在int型可表示的范围内).

Output

对于每组测试数据, 输出小明A+B的结果.

Sample Input

2

35 80

15 1152

Sample Output

15

67

其实,这道题的易错点是看到题意:A和B均在int型可表示的范围内就会忽略a+b可能超出int范围而写出下面的程序:

#include<stdio.h>

int main()
{
int t;
while(scanf("%d", &t)!=EOF){
int i, a, b, sum;
for(i=0; i<t; i++){
scanf("%d%d", &a, &b);
sum = a+b;  //致错处①
printf("%02d\n", sum%100);//致错处②
}
}
return 0;
}




比较中规中矩的做法:

#include<stdio.h>

int main()
{
int t;
while(scanf("%d", &t)!=EOF){
int i, a, b, sum;
for(i=0; i<t; i++){
scanf("%d%d", &a, &b);
if(a>=100 && b>=100){
sum = a%100 + b%100;
}
else if(a>=100 && b<100){
sum = a%100 + b;
}
else if(a<100 && b>=100){
sum = a + b%100;
}
else{
sum = a+b;
}
if(sum>=100){
printf("%d\n", sum%100);
}
else{
printf("%d\n", sum);
}

}
}
return 0;
}




简洁的做法是:

#include<stdio.h>

int main()
{
int t;
while(scanf("%d", &t)!=EOF){
int i, a, b, sum;
for(i=0; i<t; i++){
scanf("%d%d", &a, &b);
sum = a%100 + b%100;
printf("%d\n", sum%100);
}
}
return 0;
}




在做这道题的时候,其实在输出结果的格式上,是有考虑过%02d,不过,由题意知道,不会把5看成05来对待,事实也证明%02d是错的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: