#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
const int N = 1e5+10;
int n;
int q[N];
vector<int>add(vector<int> &A,vector<int> &B)
{
vector<int> C;
if(A.size() < B.size()) return add(B,A);(1)
int t=0;(3)
for (int i = 0; i < A.size(); i ++ )
{
t+=A[i];
if(i<B.size()) t+=B[i];(2)
C.push_back(t%10);
t/=10;
}
if(t) C.push_back(t);(4)
return C;
}
int main()
{
string a,b;
vector<int> A,B;
cin>>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');
auto C = add(A,B);
for(int i =C.size()-1;i>=0;i--) cout<<C[i];
return 0;
}
(1)将位数多的数看做A
(2)如果第 i 位 B有数字,t += B[i]
(3)t 用来存储每次两个数的同一位 并且起到进位的作用
details:
(4)考虑最高位进1的情况