3:大整数乘法
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
求两个不超过200位的非负整数的积。
输入
- 有两行,每行是一个不超过200位的非负整数,没有多余的前导0。 输出
- 一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 样例输入
-
12345678900 98765432100
样例输出
-
1219326311126352690000
提示
- 30%的数据,输入的两个整数不超过8位。
-
#include<stdio.h>
#include<string.h>
#define max 3000
int main()
{
char a[max],b[max];
int s[max],c[max];
int i,j,l1,l2;
while(~scanf("%s%s",a,b))
{
l1=strlen(a);
l2=strlen(b);
for(i=0;i<l1+l2;i++)
s[i]=0;
for(i=0;i<l1;i++)
{
for(j=0;j<l2;j++)
{
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
}
}
for(i=l1+l2-1;i>=0;i--)
{
if(s[i]>=10)
{
s[i-1]+=s[i]/10;
s[i]=s[i]%10;
}
}
int w=0;
while(s[w]==0)
{
w++;
}
for(;w<l1+l2;w++)
{
printf("%d",s[w]);
}
printf("\n");
}
return 0;
}