#include<iostream>
#include<cstring>
using namespace std;
int main(){
int strA[4000],strB[4000],strC[4000]={0};
int lenA=0,lenB=0,lenC=0,i,j,t=0,flagA=1,flagB=1;
char str[40000];
//输入第一个数
cout<<"输入第一个数,回车结束输入:";
gets(str);
for(i=0;i<strlen(str);i++){
if(str[i]=='-'){
flagA=-1;
continue;
}
strA[t++]=str[i]-'0';
}
lenA=t;
//输入第二个数
cout<<"输入第二个数,回车结束输入:";
gets(str);
for(i=0,t=0;i<strlen(str);i++){
if(str[i]=='-'){
flagB=-1;
continue;
}
strB[t++]=str[i]-'0';
}
lenB=t;
//两数相乘
for(int i=lenA-1,p=0;i>=0;i--,p++){
for(int j=lenB-1,k=0;j>=0;j--,k++){
strC[k+p]+=strA[i]*strB[j];
lenC=k+p+1;
}
}
//进位
int newLen=0;
for(int i=0;i<lenC;i++){
if(strC[i]>=10){
int n=strC[i];
strC[i]=n%10;
n=n/10;
newLen=i;
int t=i+1;
while(n){
strC[t]+=n%10;
n=n/10;
newLen=t;
t++;
}
}
if(newLen<i) newLen=i;
}
cout<<"乘积:";
if(strC[newLen]==0){
cout<<"0"<<endl;
return 0;
}
//判断符号
if(flagA*flagB==-1) cout<<"-";
//输出乘积
for(int i=newLen;i>=0;i--){
cout<<strC[i];
}
return 0;
}