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