题目背景
无
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。a,b <= 10500
输出格式
输出只有一行,代表a+ba+b的值
输入输出样例
输入 #1
1
1
输出 #1
2
C,C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(void) {
char str1[505], str2[505];
int dig1[505], dig2[505];
memset(str1, 0, sizeof(str1)); //初始化
memset(str2, 0, sizeof(str2));
memset(dig1, 0, sizeof(dig1));
memset(dig2, 0, sizeof(dig2));
scanf("%s\n", str1);
scanf("%s", str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
int t = 0;
for (int i = len1 - 1; i >= 0; i--) //把个位数放到前面 依次相加进位
dig1[t++] = str1[i] - '0';
t = 0;
for (int i = len2 - 1; i >= 0; i--)
dig2[t++] = str2[i] - '0';
int len = len1 > len2 ? len1 : len2;//两数之和肯定是两个数中位数多的或者 加一
for (int i = 0; i < len; i++) {
dig1[i] += dig2[i];
if (dig1[i] >= 10) {
dig1[i] -= 10;
dig1[i + 1]++;
}
}
int i;
for (i = len; dig1[i] == 0; i--);
for (int j = i; j > 0; j--)
printf("%d", dig1[j]);
printf("%d\n", dig1[0]);
return 0;
}