高精度乘法
描述
之前做过了一道关于高精度加法的,想必难不倒大家,那么请大家现在尝试一下高精度乘法吧!
输入
输入包括两行。
第一行一个整数A,第二行一个整数B。(0 \le A,B \le 10 ^ {1000}0≤A,B≤101000)
输出
输出一行,A和B的乘积。
输入样例 1
111111111111 111111111111
输出样例 1
12345679012320987654321
#include<stdio.h>
#include<string.h>
int main()
{
char s1[10000],s2[10000];
int a[10000],b[10000],c[10000]={0};
gets(s1);
gets(s2);
int lena=strlen(s1);
int lenb=strlen(s2);
for(int i=0;i<lena;i++)
a[lena-1-i]=s1[i]-'0';
for(int i=0;i<lenb;i++)
b[lenb-1-i]=s2[i]-'0';
for(int i=0;i<lena;i++)
for(int j=0;j<lenb;j++)
{
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
int lenc=lena+lenb;
while(c[lenc]==0&&lenc>0)
lenc--;
for(int i=lenc;i>=0;i--)
printf("%d",c[i]);
return 0;
}