#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*用两个char型数组a[100],b[100]分别存放两个整数。arr1为大数a的数字型,arr2为大数b的数字型,即数组每一位存放大数的每一位,arr3存放乘积。
当an…a2a1与bm…b1相乘时,单步执行结果为b1a1 b1a2 … 共有mn项。
arr3[i+j]+=arr2[i]*arr1[j]
当将mn个值放入arr3中时,再考虑进位。当某一项大于10时,就进位,接收进位的为第i+1项。
考虑到结果为0的情况,设置一个Flag,从arr3的较大的下标位开始循环,遇到非0的数才打印,实现去除前导零的步骤。*/
char str1[210], str2[210];
int arr1[210], arr2[210], arr3[40010];
int main()
{
gets(str1);
gets(str2);
int i , j;
int len1 = strlen(str1);
int len2 = strlen(str2);
i = 0;
for(j = len1 - 1; j >= 0; j--)
{
//arr1存放大数a的数字型
arr1[i] = str1[j] - '0';
i++;
}
i = 0;
for(j = len2 - 1;j >= 0; j--)
{
//arr2存放大数b的数字型
arr2[i] = str2[j] - '0';
i++;
}
for(i=0;i<len2;i++)
{
for(j=0;j<len1;j++)
arr3[i+j]+=arr2[i]*arr1[j];//相乘
}
for(i = 0;i < 400;i++)
{
//处理相加大于10的情况
if(arr3[i] >= 10)
{
arr3[i+1]+=arr3[i]/10;
arr3[i]=arr3[i]%10;
}
}
int flag = 0;
for( i = 400; i >= 0; i -- )
if(flag)
printf("%d", arr3[i]);
else if(arr3[i]) {
printf("%d", arr3[i]);
flag = 1;
}
if(!flag )
printf("0");//结果为0
return 0;
}