高精度算法(加法)
#include <bits/stdc++.h>
using namespace std;
char s1[510], s2[510];
int a[510], b[510], c[510];
int a0, b0, c0;
int main() {
scanf("%s", s1 );
scanf("%s", s2 );
a0 = strlen(s1 );
b0 = strlen(s2 );
for (int i = 0; i < a0; i++)
//让数颠倒;个位在前面,从前面开始算
a[a0 - i] = s1[i] - '0';
for (int i = 0; i < b0; i++)
b[b0 - i] = s2[i] - '0';
//判断谁的位数多,
//加到最后肯定会比位数最多的数多一位数:
c0 = max(a0, b0) + 1;
//因为上面是从0开始输入的,
//最后i最后只会到达a0-1的位置
//所以a0-(a0-1)=1;要从1开:
for (int i = 1; i <= c0; i++) {
c[i] += b[i] + a[i];//累加
c[i + 1] = c[i] / 10;//前面的数加后面进的数
c[i] = c[i] % 10; //当前第i位数
}
if (c[c0] == 0 && c0 > 0)
c0 --;//如果最后一位数是0,就减去
for (int i = c0 ; i >= 1; i--) {
printf("%d", c[i]);//因为是倒着算的,所以要从后面输出
}
return 0;
}