大数相乘,开三个数组,分别存两个大数和结果。
#include<stdio.h>
#include<string.h>
#define N 100000
char a[N];
char b[N];
int c[N+100];
int main()
{
int i,j,k,n,l1,l2,m;
scanf("%d",&n);
getchar();
while(n--)
{
gets(a);
gets(b);
k=0;
l1=strlen(a);
l2=strlen(b);
memset(c,0,sizeof(c));
for(i=0;i<l1;i++)
for(j=0;j<l2;j++)
{
c[i+j]+=(a[i]-'0')*(b[j]-'0');
}
for(i=l1+l2-2;i>0;i--)
{
if(c[i]>9)
{
m=c[i]/10;
c[i]%=10;
c[i-1]+=m;
}
}
for(i=0;i<=l1+l2-2;i++)
printf("%d",c[i]);
puts("");
}
return 0;
}