描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
#include <stdio.h>
#include <string.h>
#define Int(ch) ((ch) - '0')
int main(void)
{
char a[200];
char b[200];
int result[201];
gets(a);
gets(b);
int i = strlen(a) - 1;
int j = strlen(b) - 1;
int t = 0;
int cnt = 0;
while (i>=0 && j>=0){
t = Int(a[i--]) + Int(b[j--]) + t;
result[cnt++] = t % 10;
t = t / 10;
}
while (i >= 0){
t = Int(a[i--]) + t;
result[cnt++] = t % 10;
t = t / 10;
}
while (j >= 0){
t = Int(b[j--]) + t;
result[cnt++] = t % 10;
t = t / 10;
}
if (t == 1){
result[cnt++] = 1;
}
int flag = 0;
for (i=cnt-1; i>=0; i--){
if (result[i] != 0){ // 去除前导零
flag = 1;
}
if (flag == 1){
printf("%d", result[i]);
}
}
if (flag == 0){ // 结果为零
printf("0");
}
return 0;
}