给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Sample Input
123456
234567
Sample Output
28958703552
#include<stdio.h>
#include<string.h>
#define MAX 1005
char a[MAX],b[MAX];
int c[MAX],d[MAX],e[MAX*3]; //最多两倍
int main()
{
int i,j,n,m,t=0,k=0,l=0;
scanf("%s",a);
scanf("%s",b);
n=strlen(a);
m=strlen(b);
for(i=n-1;i>=0;i--)//倒序存放
c[k++]=(a[i]-'0');
for(j=m-1;j>=0;j--)
d[l++]=(b[j]-'0');
for(i=0;i<n;i++) //把每位相错乘起来,并相加
{
for(j=0;j<m;j++)
{
e[i+j]+=c[i]*d[j];
}
}
t=i+j;
for(i=0;i<=t;i++)//进位
{
if(e[i]>9)
{
e[i+1]+=e[i]/10;
e[i]%=10;
}
}
while(!e[t]&&t)//把0去掉
t--;
for(i=t;i>=0;i--)//倒序输出
printf("%d",e[i]);
printf("\n");
return 0;
}