#include <stdio.h>
#include <string.h>
#define max 10001
int high_precision(int *sum,int *a,int *b,int a_len,int b_len)
{
int i,j;
memset(sum,0,sizeof(sum));
int sum_len = 0 ;
for(i=1;i<=a_len;i++) /*用数组模拟运算*/
for(j=1,sum_len=i-1;j<=b_len;j++)
sum[++sum_len] += b[j]*a[i];
for(i=1;i<=sum_len;i++)/*进位处理*/
if(sum[i] >= 10)
{
if(sum[sum_len] >= 10)
sum_len++;
sum[i+1] += sum[i]/10;
sum[i] %= 10;
}
return sum_len;
}
int main()
{
int a[max]= {0},b[max]= {0},sum[max*2]= {0};
int a_len=0,b_len=0,sum_len=0;
int i,j;
char c_a[max],c_b[max],c_sum[max*2];
scanf("%s%s",c_a,c_b);
a_len = strlen(c_a);
b_len = strlen(c_b);
for(i=1,j=a_len-1;i<= a_len;i++,j--)
a[i] = c_a[j] - '0';
for(i=1,j=b_len-1;i<= b_len;i++,j--)
b[i] = c_b[j] - '0';
sum_len = high_precision(sum,a,b,a_len,b_len) ;
for(i=sum_len;i>=1;i--)
printf("%d",sum[i]);
putchar('\n');
return 0 ;
}
高精度乘法
最新推荐文章于 2023-11-21 20:06:03 发布