#include <stdio.h>
#define N 31
int * multiplication(int *b,int *arr1,int *arr2,int n);
int main(int argc, const char *argv[])
{
int a1[N],a2[N];
int b[2*N];
int i,j;
for(i=0;i<2*N;i++)
{
b[i]=0;
}
for(i=1,j=0;i<21;i++)
{
if(i<10)
{
a1[j]=i;
a2[N-1-j]=i;
j++;
}
else
{
a1[j]=i/10;
a2[N-1-j]=i%10;
j++;
a1[j]=i%10;
a2[N-1-j]=i/10;
j++;
}
}
for(i=0;i<N;i++)
printf("%d",a1[i]);
puts("");
for(i=0;i<N;i++)
printf("%d",a2[i]);
puts("");
multiplication(b,a1,a2,N);
for(i=0;i<2*N;i++)
printf("%d",b[i]);
puts("");
}
int * multiplication(int *b,int *arr1,int *arr2,int n)
{
int i,j,k,d;
int temp[2*n],swap;
for(i=0;i<2*n;i++)
{
temp[i]=0;
}
k=0;
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=0;j--)
{
k=i+j+1
temp[k]+=(arr1[i]*arr2[j]);
if(temp[k]>=10)
{
swap=temp[k];
temp[k]=swap%10;
temp[k-1]+=swap%100/10;
temp[k-2]+=swap/100;
}
}
}
for(i=0;i<2*n;i++)
{
b[i]=temp[i];
}
return b;
}
运行结果