int mul[1000];
int a1[100],b1[100];
int lena,lenb;
void output() //输出结果
{
int i,pos;
for(i=999;i>=0;i--)
if(mul[i]!=0)
{pos = i; break;}
for(i=pos;i>=0;i--)
printf("%d",mul[i]);
printf("\n");
}
int mov(int *c,int n)
{
int pos,i;
for(i=199;i>=0;i--) //找到c数组中的最高位
if(c[i]!=0)
{pos=i;break;}
for(i=pos;i>=0;i--) //将数组往后面移动n位
c[i+n] = c[i];
for(i=0;i<n;i++)
c[i] = 0; //往前面补0
return (pos+n); //返回最高位位置
}
void cheng()
{
int i,j,k;
int c[200];
memset(c,0,sizeof(c));
for(i=0;i<lenb;i++)
{
for(j=0;j<lena;j++)
{
c[j] = a1[j]*b1[i]; //被乘数的每一位乘以乘数的一位
}
mov(c,i);
for(k=0;k<200;k++) //把乘积累加起来
mul[k]+=c[k];
int sum=0;
for(k=0;k<999;k++) //产生进位处理
{
sum +=mul[k];
mul[k] = sum%10;
sum/=10;
}
memset(c,0,sizeof(c));
}
}
void main()
{
int i,j;
char a[100],b[100]; //用来输入两个大数
gets(a);
gets(b);
lena=strlen(a);
lenb=strlen(b);
for(i=0;a[i]!='\0';i++)
a1[i] = a[strlen(a)-i-1] - 48; //将字符串大数转换成整形
for(i=0;b[i]!='\0';i++)
b1[i] = b[strlen(b)-i-1]-48;
cheng(); //大数相乘
output();
}
int a1[100],b1[100];
int lena,lenb;
void output() //输出结果
{
int i,pos;
for(i=999;i>=0;i--)
if(mul[i]!=0)
{pos = i; break;}
for(i=pos;i>=0;i--)
printf("%d",mul[i]);
printf("\n");
}
int mov(int *c,int n)
{
int pos,i;
for(i=199;i>=0;i--) //找到c数组中的最高位
if(c[i]!=0)
{pos=i;break;}
for(i=pos;i>=0;i--) //将数组往后面移动n位
c[i+n] = c[i];
for(i=0;i<n;i++)
c[i] = 0; //往前面补0
return (pos+n); //返回最高位位置
}
void cheng()
{
int i,j,k;
int c[200];
memset(c,0,sizeof(c));
for(i=0;i<lenb;i++)
{
for(j=0;j<lena;j++)
{
c[j] = a1[j]*b1[i]; //被乘数的每一位乘以乘数的一位
}
mov(c,i);
for(k=0;k<200;k++) //把乘积累加起来
mul[k]+=c[k];
int sum=0;
for(k=0;k<999;k++) //产生进位处理
{
sum +=mul[k];
mul[k] = sum%10;
sum/=10;
}
memset(c,0,sizeof(c));
}
}
void main()
{
int i,j;
char a[100],b[100]; //用来输入两个大数
gets(a);
gets(b);
lena=strlen(a);
lenb=strlen(b);
for(i=0;a[i]!='\0';i++)
a1[i] = a[strlen(a)-i-1] - 48; //将字符串大数转换成整形
for(i=0;b[i]!='\0';i++)
b1[i] = b[strlen(b)-i-1]-48;
cheng(); //大数相乘
output();
}