void print(int p[], int n)
{
int index = 0;
for(int i = 0; i < n; i++)
if(index == 0 && p[i] == 0)
continue;
else
{
index = 1;
printf ("%d", p[i]);
}
printf ("\n");
}
void BigNumProduct(const char* a, const char* b)
{
int alen = strlen(a) ;
int blen = strlen(b) ;
int tmp = 0, m = alen + blen;
int up = 0;
int* re = (int *)malloc(sizeof(int) * m);
memset(re, 0, sizeof(int) * m);
m--;
for(int i = alen - 1; i >= 0; i--)
{
for(int j = blen - 1; j >= 0; j--)
{
tmp = (a[i] - '0') * (b[j] - '0');
re[m + j - blen + 1] += up + tmp;
up = re[m + j - blen + 1] / 10;
if(re[m + j - blen + 1] >= 10)
{
if(j == 0)
{
re[m + j - blen] = re[m + j - blen + 1] / 10;
}
re[m + j - blen + 1] %= 10;
}
}
up = 0;
m--;
}
print(re, alen + blen);
free(re);
re = NULL;
}
int main(int argc, char *argv[])
{
BigNumProduct("123456789101112131415", "123456789101112131415");
return 0;
}
c语言实现大数相乘
最新推荐文章于 2021-12-11 17:04:08 发布