#include <iostream>
using namespace std;
void arrayPrint(int *p);
void Muli(char *num1,char *num2);
int main()
{
char num1[100];
char num2[100];
cin>>num1>>num2;
Muli(num1,num2);
getchar();
getchar();
}
void Muli(char *num1,char *num2)
{
//判断输入
if(num1==NULL||num2==NULL)
{
cout<<"error1"<<endl;
return;
}
int len1=strlen(num1);
int len2=strlen(num2);
if(len1==0||len2==0)
{
cout<<"error2"<<endl;
return;
}
//字符串转数组
int *tempNum1=new int[len1+1];
int *tempNum2=new int[len2+1];
memset(tempNum1,0,sizeof(int)*(len1+1));
memset(tempNum2,0,sizeof(int)*(len2+1));
tempNum1[len1]=-1;
tempNum2[len2]=-1;
for(int i=0;i<len1;i++)
{
if (num1[len1-1-i]<'0'||num1[len1-1-i]>'9')
{
cout<<"error3"<<endl;
return;
}
tempNum1[i]=num1[len1-1-i]-'0';
}
for (int i=0;i<len2;i++)
{
if (num2[len2-1-i]<'0'||num2[len2-1-i]>'9')
{
cout<<"error4"<<endl;
return;
}
tempNum2[i]=num2[len2-1-i]-'0';
}
// 得到结果
int *result=new int[len1+len2+1];
memset(result,0,sizeof(int)*(len1+len2+1));
for (int i=0;i<len1;i++)
for (int j=0;j<len2;j++)
{
int temp=tempNum1[i]*tempNum2[j];
result[i+j]+=temp%10;
result[i+j+1]+=temp/10;
}
for (int i=0;i<len1+len2-1;i++)
{
int temp=result[i];
if (temp>9)
{
result[i]=temp%10;
result[i+1]+=temp/10;
i=0;
}
}
if (result[len1+len2-1]==0)
{
result[len1+len2-1]=-1;
}
else
result[len1+len2]=-1;
//打印结果
cout<<endl;
arrayPrint(tempNum1);
cout<<'*'<<endl;
arrayPrint(tempNum2);
cout<<'='<<endl;
arrayPrint(result);
delete []result;
delete []tempNum1;
delete []tempNum2;
}
void arrayPrint(int *p)
{
int i=0;
while (p[i]!=-1)
{
i++;
}
int Hindex=i-1;
for (int i=Hindex;i>=0;i--)
{
cout<<p[i];
}
cout<<endl;
}