高精度加法模板题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
#define _for(i, a, b) for(int i = a; i < b; ++i)
struct bign{
int len;
int data[1010];
bign(){
len = 0;
memset(data, 0, sizeof(data));
}
};
bign change(string a){
bign c;
int lena = a.length();
c.len = lena;
_for(i, 0, lena){
c.data[i] = a[lena - i - 1] - '0';
}
return c;
}
bign add(bign a, bign b){
bign c;
int len = max(a.len, b.len);
int carry = 0;
_for(i, 0, len){
int tmp = a.data[i] + b.data[i] + carry;
c.data[c.len++] = tmp % 10;
carry = tmp / 10;
}
if(carry != 0){
c.data[c.len++] = carry;
}
return c;
}
void print(bign a){
for(int i = a.len - 1; i >= 0; --i){
printf("%d", a.data[i]);
}
printf("\n");
}
int main(){
string s1, s2;
while(cin >> s1 >> s2){
bign a = change(s1), b = change(s2);
print(add(a, b));
}
return 0;
} 
京公网安备 11010502036488号