题目(材料题)
01 #include <algorithm>
02 #include <iostream>
03 #include <string>
04 using namespace std;
05 int a[100007], b[100007], c[100007], carry[100007];
06 string input_str;
07 int a_len, b_len;
08 int main() {
09 cin >> input_str;
10 a_len = input_str.size();
11 for (int i = 0; i < a_len; i++) {
12 a[i] = input_str[a_len - i - 1] - '0';
13 }
14 cin >> input_str;
15 b_len = input_str.size();
16 for (int i = 0; i < b_len; i++) {
17 b[i] = input_str[b_len - i - 1] - '0';
18 }
19 carry[0] = 0;
20 for (int i = 0; i < max(a_len, b_len) + 1; i++) {
21 c[i] = a[i] + b[i] + carry[i];
22 if (c[i] >= 10) {
23 carry[i + 1] = 1;
24 c[i] -= 10;
25 } else {
26 carry[i + 1] = 0;
27 }
28 }
29 for (int i = max(a_len, b_len); i >= 0; i--) {
30 cout << c[i];
31 }
32 cout << endl;
33 return 0;
34 }
本题输入的两个数均为非负整数,位数不超过100000,可能包含前导零。

关注我们