/*
高精度数字
当数字的位数很高的时候我们往往采用高精度数字的形式进行运算
通常使用数组的形式存储一个数字 数组从小到大分别存储数字的个位,十位,百位..............
高精度加法
两个数字分别写成数字数组的格式进行从个位开始的逐位相加的运算,当某一位运算结果>10的时候,就向上一位进1,等同于小时候列的加法竖式
最后结果也用一个数字数组表示,数组中的每一个元素=两个数组元素数字之和+t(表示从上一位进来的一位,若不进则t=0进位t=1)
A<=10 表示A是小于10的数字
len(A)<=10 表示A是位数小于10的数字
*/
#include<iostream>
#include<vector>//自带一个size()表示数组的长度vector是顺序容器 push_back函数的意思是在尾部插入一个数据
using namespace std;
const int N=1e6+10;
//C=A+B
vector<int> add(vector<int> &A,vector<int> &B){
vector<int> C;
int t=0;//t表示进位
for(int i=0;i<A.size()||i<B.size();i++){
if(i<A.size()) t+=A[i];
if(i<B.size()) t+=B[i];
C.push_back(t%10);
t/=10;
}
if(t) C.push_back(1);
return C;
}
int main(){
string a,b;//a="123456" 以字符串的形式输入a.b两串数字
vector<int> A,B;
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');//A={6,5,4,3,2,1}
for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');//为方便我们进行竖式计算 我们要把个位放在最后面
vector<int> C=add(A,B);//可以使用auto即表示 计算机会根据add(A,B)的类型来创建一个C
for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]); //将vector<int> C作为一个数组的方式输出出来 注意这里要反向输出
return 0;
}