Contents
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
39
40
41
42
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>

using namespace std;

string add(string str1, string str2)
{
int goBit = 0; // 存放进位

if (str1.length() < str2.length()) { //要求被加数更长或相等
string tmp = str1;
str1 = str2;
str2 = tmp;
}

string tmp (str1.length() - str2.length(), '0');//如果加数比被加数短,就在前面补0
str2 = tmp + str2;

int len1 = str1.length();
for (int i = len1 - 1; i >= 0; --i) { //从后往前模拟普通的加法运算
int tmp = ((str1[i] - '0') + (str2[i] - '0') + goBit) ;
str1[i] = tmp%10 + '0'; //取相加后的末位
goBit = tmp/10; //取进位
}

if(goBit != 0){ //最后一次相加还有进位
char ch = '0' + goBit;
return ch + str1;
}
return str1;
}


int main()
{
string str1, str2;
cin >> str1 >> str2;
cout << add(str1, str2) << endl;
return 0;
}
Contents