题目:
题目描述
输入两个正整数a,b,输出a+b的值。
输入
两行,第一行a,第二行b。a和b的长度均小于1000位。
输出
一行,a+b的值。
样例输入
4
2
样例输出
6
思路:模板
Code:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int maxn = 1000;
struct Bign{
int l;
int d[maxn];
Bign(){
memset(d, 0, sizeof(d));
}
};
void print(Bign &a){
for(int i = a.l - 1; i >= 0; --i){
cout<<a.d[i];
}
cout<<endl;
}
Bign add(Bign a, Bign b){
Bign res;
res.l = max(a.l, b.l);
int carry = 0;
for(int i = 0; i < res.l; ++i){
int tmp = a.d[i] + b.d[i] + carry;
res.d[i] = tmp % 10;
carry = tmp / 10;
}
if(carry != 0){
res.d[res.l++] = carry;
}
return res;
}
Bign change(string &s){
Bign res;
int len = s.length();
for(int i = 0; i < len; ++i){
res.d[i] = s[len - i - 1] - '0';
}
res.l = len;
return res;
}
int main(){
string s1,s2;
cin >> s1 >> s2;
Bign a = change(s1);
Bign b = change(s2);
Bign res = add(a, b);
print(res);
return 0;
}