#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
char num1[520],num2[520];//数字
int a[520],b[520];//存储(每位)数字
int i,j;//喂给循环方便用数组
int len1,len2;//数字数位长度
int plus;//进位
int maxx;//较大数
cin>>num1>>num2;//模拟数字的输入
len1=strlen(num1);//同下11
len2=strlen(num2);//获取数位长度
/*
234
+ 9
__1___ ---进位
243
所以我们采用倒序
*/
for(i=0;i<len1;i++)
{
a[i]=num1[len1-i-1]-48;//同30行注释
}
for(i=0;i<len2;i++)
{
b[i]=num2[len2-i-1]-48;//倒序 48='0'得到int 类型的对应位数上的数字
}
maxx=max(len1,len2);//取较长放上面,大的加完为止(Chinese)
/*下面是模拟竖式计算*/
for(i=0;i<maxx;i++)
{
a[i]=a[i]+b[i]+plus;//每一位是上数加下数加进位
plus=a[i]/10;//int向下取整 例如4+9=13; 13/10=1
a[i]%=10;//数位取个位
}
if(plus==1)cout<<plus;//特判二次进位,最多有1(a+b)
for(i=maxx-1;i>=0;i--)
{
cout<<a[i];//因为倒叙所以从数组的最后一位输出(最后一位对应原数第一位,第一位对应原数最后一位)
}
}