2980:大整數乘法
- 時間限制:
- 1000ms
- 內存限制:
- 65536kB
- 描述
- 求兩個不超過200位的非負整數的積。
- 輸入
- 有兩行,每行是一個不超過200位的非負整數,沒有多餘的前導0。
- 輸出
- 一行,即相乘後的結果。結果裏不能有多餘的前導0,即如果結果是342,那麼就不能輸出爲0342。
- 樣例輸入
-
12345678900
98765432100
- 樣例輸出
-
1219326311126352690000
#include<stdio.h>
#include<string.h>
int main()
{
int a[1000],b[1000],c[1000],i,j,k1,k2;
char st1[1000],st2[1000];
scanf("%s%s",st1,st2);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
k1=strlen(st1);
k2=strlen(st2);
for(i=0;i<=k1-1;i++)
a[i]=st1[k1-i-1]-'0';
for(i=0;i<=k2-1;i++)
b[i]=st2[k2-i-1]-'0';
for(i=0;i<=k1-1;i++)
for(j=0;j<=k2-1;j++)
c[i+j]+=a[i]*b[j];
for(i=0;i<=k1+k2-1;i++)
{
if(c[i]>9)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
j=k1+k2;
while(c[j]==0&&j>0)
j--;
for(i=j;i>=0;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}