char* multiply(char* num1, char* num2) {
if(*num1=='0'||*num2=='0')return "0";
int len1=strlen(num1),len2=strlen(num2);
char*res=(char*)malloc((len1+len2+1)*sizeof(char));
for(int i=0; i<len1+len2; i++)res[i]=48;
res[len1+len2]='\0';
for(int i=0; i<len2; i++) {
for(int j=0; j<len1; j++) {
int result=(num2[i]-'0')*(num1[j]-'0'),carryout=0;
for(int b=i+j+1; b>=0; b--) {
int h=0;
if(b==i+j+1)h=result%10;
else if(b==i+j&&(result)>9)h=result/10;
else h=0;
int tt=res[b]-'0'+h+carryout;
res[b]=tt%10+'0';
carryout=tt/10;
if(!carryout&&b<=i+j)break;
}
}
}
return *res=='0'?++res:res;
}