1、高精度加法
cpp
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B){
if(A.size()<B.size()) return add(B,A);
int t=0;
vector<int> C;
for(int i=0;i<A.size();i++){
t+=A[i];
if(i<B.size()) t+=B[i];
C.push_back(t%10);
t/=10;
}
if(t) C.push_back(t);
return C;
}
int main(){
string a,b;
cin>>a>>b;
vector<int> A,B;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
vector<int> C=add(A,B);
for(int i=C.size()-1;i>=0;i--)cout<<C[i];
return 0;
}
核心思想:用数组/向量存储大数的每一位(个位在前,高位在后),模拟竖式加法。
bash
输入: "123" + "94"
存储: A = [3,2,1] B = [4,9]
计算过程:
i=0: t=3+4=7 C=[7] t=0
i=1: t=2+9=11 C=[7,1] t=1
i=2: t=1+1=2 C=[7,1,2] t=0
结果C = [7,1,2] → 倒序输出 "217"
验证: 123+94=217 ✓