高精度加法模板

高精度加法模板

/ 0评 / 1463次 / 1

我们有的时候会遇到超过六十四位int的问题,那么就需要使用到高精度加法模板

高精度加法的思想本身很简单,就是竖式加法的程序表达,模板如下

/*
 * @Author: Gehrychiang
 * @Date: 2020-02-01 10:32:54
 * @Website: www.yilantingfeng.site
 * @E-mail: gehrychiang@aliyun.com
 */
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000001;
char a[MAXN];
char b[MAXN];
char c[MAXN];
void add_h_acc()
{
    int p = 0;
    int len_a = strlen(a);
    int len_b = strlen(b);
    int tmp = 0; //当前加
    int nex = 0; //下位进
    c[p] = '0';
    while (a[0] != '0' || b[0] != '0' || nex != 0) //a或b的最高位不为0即继续
    {
        c[p] = '0';
        tmp += nex;
        tmp += a[max(len_a - 1 - p, 0)] - '0' + b[max(len_b - 1 - p, 0)] - '0';
        a[len_a - 1 - p] = '0';
        b[len_b - 1 - p] = '0';
        nex = tmp / 10;
        tmp %= 10;
        c[p] += tmp;
        tmp = 0;
        ++p;
    }
}
//a+b=c
int main()
{
    cin >> a >> b;
    add_h_acc();
    int len_c = strlen(c);
    for (int i = len_c - 1; i >= 0; i--)
    {
        cout << c[i];
    }
    return 0;
}

发表回复

您的电子邮箱地址不会被公开。

你好 No.65343