题解
2024-07-28 18:56:13
发布于:北京
13阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a1[10000005], b1[10000005], c[10000005];
char a[10000005], b[10000005];
int main() {
cin >> a >> b;
// 一个整数中间不可能有空格,因此可以直接cin读入a, b.
int lena = strlen(a);
// 求两位数的位数.
int lenb = strlen(b);
for (int i = 1; i <= lena; i++) {
a1[i] = a[lena - i] - '0';
// 分别倒叙存入整型(int)数组中.
}
for (int i = 1; i <= lenb; i++) {
b1[i] = b[lenb - i] - '0';
// 分别倒叙存入整型(int)数组中.
}
int lenc = 1;
int x = 0;
while (lenc <= lena || lenc <= lenb) {
c[lenc] = a1[lenc] + b1[lenc] + x;
// 求每一位数字相加,存入数组c(x为上个数的进位).
x = c[lenc] / 10;
// 求x(进位).
c[lenc] %= 10;
// %去10,因为高于十位需要向上进位,只能保留个位.
lenc++;
}
c[lenc] = x;
if(c[lenc]==0) lenc--;
// while (c[lenc] == 0 && lenc > 1) {
// // 删除前导0,lenc > 1是因为至少要保留一个0.
// lenc--;
// }
for (int i = lenc; i >= 1; i--) {
// 输出结果.
cout << c[i];
}
cout << endl;
return 0;
}
这里空空如也
有帮助,赞一个