百鍊 2980 大整數乘法

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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章