#include <iostream>
using namespace std;
const int MAX=40; //题目要求整数位不超过40位
const int result=100; //两数相乘结果要较大,位数较多
char a[MAX+10];
char b[MAX+10]; //接受输入的数字
int amul[MAX+10];
int bmul[MAX+10]; //存储转换过后的数值
int xj[result+10];//乘积
void interger(char *s,int *t,int length)//将字符型转换成整型
{
int i=length-1;//i从后往前
int in=0;
for(;in<length;in++,i--)//字符型的最后一个为整型的第一个
{
t[in]=s[i]-'0';//也可以写为t[index]=s[i]-48
}
}
int main()
{
int i, j;
cin>>a>>b;//输入a、b两个乘数
if(!strcmp(a,"0")||!strcmp(b,"0"))//如果输入的数中有一个数为0,输出0
{
cout<<"0"<<endl;
return 0;
}
//调用interger将字符型化为整型
interger(a, amul, strlen(a));
interger(b, bmul, strlen(b));
for(i=0;i<strlen(b);i++) //此处先不考虑进位
{
for(j=0;j<strlen(a);j++)//b中的第一个数分别去乘a中的数,结束后b++
{
xj[i+j]+=bmul[i]*amul[j];//乘积叠加到原位置的数上
}
}
for(i=0;i<result;i++)
{
if(xj[i]>=10)// 大于10的数要进位
{
xj[i+1]+=xj[i]/10;//进位的数是除以10所得的整数
xj[i]=xj[i]%10;//保留原位的数是除以所剩的余数
}
}
//将最高位前面多余的0去除
int k=result-1;//倒叙
while(xj[k]==0)
{
k--;
}//得到的k为最高位不为0的数
//倒序输出
for(;k>=0;k--)//k是while循环后的
{
cout<<xj[k];
}
cout<<endl;
return 0;
}