计算两个非负整数 A,B的和。不过这一次有些特殊,A,B可能会很大。
输入格式
第一行输入一个非负整数 A。
第二行输入一个非负整数 B。
A,B的长度不大于 500。
输出格式
输出 A+B的值。不要有多余的前导零。
#include <iostream>
#include <string>
using namespace std;
int trans(char ch) {
return ch + (0 - '0');
}
int char_add(string& arr1, string& arr2, int index1, int index2, int& adder) {
int tmp = trans(arr1[index1]) + trans(arr2[index2]) + adder;
if (tmp >= 10) {
adder = 1;
tmp -= 10;
} else {
adder = 0;
}
return tmp;
}
int main() {
string num1, num2;
cin >> num1 >> num2;
while (num1.length() < num2.length()) {
num1 = '0' + num1;
}
while (num1.length() > num2.length()) {
num2 = '0' + num2;
}
num1 = '0' + num1;
num2 = '0' + num2;
int adder = 0;
for (int i = num2.length() - 1 ; i >= 0 ; --i) {
num2[i] = char_add(num1, num2, i, i, adder);
}
num2 = int(num2[0]) == 0 ? num2.substr(1) : num2;
for (auto e : num2) { cout << int(e); }
return 0;
}