我们有的时候会遇到超过六十四位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;
}

