#include<bits/stdc++.h>
using namespace std;
const int N=1e4+9;
int a1[1000],b1[1000],ans[1000];
void add(int a[],int b[],int na,int nb){
int t=0;
if(na<nb)return add(b,a,nb,na);
for(int i=0;i<na;i++){
t+=a[i];
if(i<nb)t+=b[i];
ans[i]=t%10;
t/=10;
}
if(t)ans[na]++;
if(t)
for(int i=na;i>=0;i--){
printf("%d",ans[i]);
}
else for(int i=na-1;i>=0;i--){
printf("%d",ans[i]);
}
}
int main()
{
char a[1000],b[1000];
scanf("%s%s",a,b);int na=strlen(a),nb=strlen(b);
for(int i=strlen(a)-1;i>=0;--i){
a1[na-i-1]=a[i]-'0';
}
for(int i=strlen(b)-1;i>=0;--i){
b1[nb-i-1]=b[i]-'0';
}
add(a1,b1,na,nb);
return 0;
}
using namespace std;
const int N=1e4+9;
vector<int> add(vector<int>&a, vector<int>&b){
//含有前导0时,54321和43210000,从“尾部”开始相加,没有任何影响
if(a.size()<b.size())return add(b,a);
vector<int> c;int n=a.size();int t=0;
for(int i=0;i<n;++i){
if(i<b.size())t+=b[i];
t+=a[i];
c.push_back(t%10);
t/=10;
}
if(t)c.push_back(1);
return c;
}
int main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string a1,b1;
cin>>a1>>b1;
vector<int> a,b;
for(int i=a1.size()-1;i>=0;i--){
a.push_back(a1[i]-'0');
}
for(int i=b1.size()-1;i>=0;i--){
b.push_back(b1[i]-'0');
}
//倒序输入如12345被存为54321
for(int i=add(a,b).size()-1;i>=0;--i){
cout<<add(a,b)[i];
}
return 0;
} 标签:高精度,int,na,板子,a1,--,b1,加法,size From: https://www.cnblogs.com/csblacktea/p/17824753.html