高精度加法

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

const int LEN = 200 + 1;
int a[LEN], b[LEN], c[LEN];
char s1[LEN], s2[LEN];

int main() {
    scanf("%s%s", s1, s2);
    a[0] = strlen(s1), b[0] = strlen(s2);
    c[0] = max(a[0], b[0]) + 1;
    for(int i = 0; i < a[0]; i++) a[i + 1] = s1[a[0] - i - 1] - '0';
    for(int i = 0; i < b[0]; i++) b[i + 1] = s2[b[0] - i - 1] - '0';
    int x = 0;
    for(int i = 1; i <= c[0]; i++) {
        c[i] = a[i] + b[i] + x;
        x = c[i] / 10;
        c[i] %= 10;
    }
    while(c[c[0]] == 0 && c[0] > 1) c[0]--;
    for(int i = c[0]; i >= 1; i--) putchar(c[i] + '0');
}
View Code

相关文章: