大整数的乘法
使用字符串来模拟实现两个大整数的乘法!
void maxIM(char *num1, int x1, char *num2, int x2)
{
char *re = (char *)malloc(x1+x2);
char *an1 = (char *)malloc(x1 );
char *an2 = (char *)malloc(x2 );
memset(re, 0, x1+x2);
memset(an1, 0, x1);
memset(an2, 0, x2);
int m=0;
for(int i = x1 - 1; i>=0; i--)
an1[m++] = num1[i] - '0';
m = 0;
for(int j = x2 - 1; j>=0; j--)
an2[m++] = num2[j] - '0';
for(int i = 0; i < x2; i++)
for(int j = 0; j < x1; j++)
{
re[i+j] += an2[i]*an1[j];
}
for(int i = 0; i < x1+x2;i++)
{
if(re[i]>=10)
{
re[i+1] += re[i]/10;
re[i] = re[i]%10;
}
}
bool startOutPut = false;
for(int i = x1 + x2 - 1; i>=0; i--)
{
if(startOutPut)
printf("%d", re[i]);
else if(re[i])
{
printf("%d", re[i]);
startOutPut = true;
}
}
if(!startOutPut)
printf("0");
printf("\n");
}
浙公网安备 33010602011771号