高精度乘法

本文深入探讨了一种复杂数值乘法算法及其进位处理机制,通过使用预定义宏和数组操作实现高效计算。算法核心在于优化乘法运算并处理进位,通过迭代累加和调整结果数组来生成最终乘积。该算法适用于多种应用场景,包括但不限于大数乘法运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include 

#include 

#include 

#include 

 

#define MAX 10001

 

int bigchenfa(int *sum,int *a,int *b,int lsum,int la,int lb)

{

    int i,j;

    memset(sum,0,sizeof(sum));

    lsum ;

    for(i=1 i<= la i++) 

        for(j=1,lsum=i-1; j<= lb j++)

            sum[++lsum] += b[j] a[i] ;

 

    for(i=1 i<= lsum i++)

    if (sum[i] >= 10)

    {

        if sum[lsum] >= 10)

            lsum ++ ;

        sum[i+1] += sum[i] 10 ;

        sum[i] %= 10 ;

    }

 

    return lsum ;

}

int main(void)

{

 

    int la=0,lb=0,lsum=0;

    int i,j ;

    char sa[MAX],sb[MAX] ;

    while(2==scanf("%s%s",sa,sb))

    {

        int a[MAX]={0},b[MAX]={0},sum[MAX*2]={0} ;

        la strlen(sa);

        lb strlen(sb);

 

        for(i=1,j=la-1; i<= la i++,j--)

            a[i] sa[j] '0' ;

        for(i=1,j=lb-1; i<= lb i++,j--)

            b[i] sb[j] '0' ;

 

        lsum bigchenfa(sum,a,b,lsum,la,lb) ;

 

        for(i=lsum i>= i--)

            printf("%d",sum[i]);

 

        printf("\n");

    }

    return ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值