蓝桥杯 adv136 大数加法

蓝桥杯 adv136 大数加法

问题描述

输入两个正整数a,b,输出 a+b 的值。

输入格式

两行,第一行 a,第二行 b。a 和 b 的长度均小于 1000 位。

输出格式

一行,a+b 的值。

样例输入

1
2
4
2

样例输出

6

参考解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>

using namespace std;

string big_add(string s1, string s2);

int main() {
string s1, s2;
cin >> s1 >> s2;
string ans = big_add(s1, s2);
cout << ans << endl;
return 0;
}

string big_add(string s1, string s2) {
int len1 = s1.length();
int len2 = s2.length();
if (len1 > len2) return big_add(s2, s1);

string tmp = string(len2 - len1, '0');
s1 = tmp + s1;

for (int j = len2 - 1; j >= 0; --j) {
s2[j] += s1[j] - '0';

if (s2[j] > '9') {
s2[j] -= 10;

if (j == 0) {
s2 = "1" + s2;
} else {
++s2[j - 1];
}
}
}
return s2;
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×