欢迎光临散文网 会员登陆 & 注册

高精度算法(加法)

2023-02-28 21:38 作者:听个安  | 我要投稿

#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;



}


高精度算法(加法)的评论 (共 条)

分享到微博请遵守国家法律