A+B Problem(高精)

题目

使用一个ans数组来存储结果。
A+B高精度,顾名思义可以改变其数据范围
从代码for循环开始模拟,先将两个同样数位的数放到ans里,
然后进位,最后模10。
判断是否最后位长度+1

#include <bits/stdc++.h>
using namespace std;
string a1, b1;
int a[600], b[600], ans[600], al, bl, an1;
void plu()
{
    reverse(a, a + al);
    reverse(b, b + bl);
    an1 = max(al, bl);
    for(int i = 0; i < an1; i++)
    {
        ans[i] += a[i] + b[i];
        ans[i+1] += (ans[i]) / 10;
        ans[i] %= 10;
    }
    if(ans[an1]) 
		an1++;
    reverse(ans, ans + an1);
    return ;
}
int main()
{
    cin >> a1 >> b1;
    al = a1.size();
    bl = b1.size();
    for(int i = 0; i < al; i++)
        a[i] = a1[i] - '0';
    for(int i = 0; i < bl; i++)
        b[i] = b1[i] - '0';
    plu();
    for(int i = 0; i < an1; i++)
        cout << ans[i];
    return 0;
}
posted @ 2025-08-27 12:30  鑫鑫志邦  阅读(2)  评论(0)    收藏  举报