Description
Calculate a*b
Input
Two integer a,b (0<=a,b<=101000)
Output
Output a * b
Sample Input
5 7
Sample Output
35
Source
xmu
两个大整数的乘法
#include<stdio.h>
#include<string.h>
#define maxn 1005
char c1[maxn],c2[maxn];
int a[maxn],b[maxn],c[maxn<<1];
int main()
{
int an,bn,cn;
scanf("%s%s",c1,c2);
if(c1[0]!='0'&&c2[0]!='0')
{
an=strlen(c1);
bn=strlen(c2);
cn = an + bn - 1;
for(int i=0;i<an;i++)
a[i]=c1[an-1-i]-'0';
for(int i=0;i<bn;i++)
b[i]=c2[bn-1-i]-'0';
for(int i = 0; i < an; i++)
for(int j = 0;j < bn; j++)
{
c[i+j] = a[i] * b[j] + c[i+j];
c[i+j+1] = c[i+j] / 10 + c[i+j+1];
c[i+j] = c[i+j] % 10;
}
while(c[cn]==0) cn--;//在最高位未进位的情况下去除首位的零
for(int i=cn;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
else
printf("0\n");
return 0;
}