高精度算法(加法)
#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++)
//讓數(shù)顛倒;個(gè)位在前面,從前面開(kāi)始算
a[a0 - i] = s1[i] - '0';
for (int i = 0; i < b0; i++)
b[b0 - i] = s2[i] - '0';
? ? ?//判斷誰(shuí)的位數(shù)多,
//加到最后肯定會(huì)比位數(shù)最多的數(shù)多一位數(shù):
c0 = max(a0, b0) + 1;
//因?yàn)樯厦媸菑?開(kāi)始輸入的,
//最后i最后只會(huì)到達(dá)a0-1的位置
//所以a0-(a0-1)=1;要從1開(kāi):
for (int i = 1; i <= c0; i++) {
c[i] += b[i] + a[i];//累加
c[i + 1] = c[i] / 10;//前面的數(shù)加后面進(jìn)的數(shù)
c[i] = c[i] % 10;? //當(dāng)前第i位數(shù)
}
if (c[c0] == 0 && c0 > 0)
c0 --;//如果最后一位數(shù)是0,就減去
for (int i = c0 ; i >= 1; i--) {
printf("%d", c[i]);//因?yàn)槭堑怪愕模砸獜暮竺孑敵?/span>
}
return 0;
}