21xrx.com
2024-09-20 00:25:20 Friday
登录
文章检索 我的文章 写文章
C++高精度乘法算法代码
2023-07-01 14:38:49 深夜i     --     --
C++ 高精度 乘法算法 代码

C++高精度乘法算法一般用于对大数进行乘法运算,准确性高,是计算机程序员常用的算法之一。以下是C++高精度乘法算法代码的实现:

 C++

#include<bits/stdc++.h>

using namespace std;

#define N 100005

char x1[N], x2[N];      

int sum[N], a[N], b[N];

int lena, lenb, lenc;     

int main(){

  scanf("%s%s", x1, x2);

  lena=strlen(x1);

  lenb=strlen(x2);

  for (int i=0; i<lena; i++)

    a[i]=x1[lena-i-1]-'0';

  for (int i=0; i<lenb; i++)

    b[i]=x2[lenb-i-1]-'0';

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

  for (int i=0; i<lena; i++){

    for (int j=0; j<lenb; j++){

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

    }

  }

  lenc=lena+lenb-1;

  while (lenc>1&&sum[lenc]==0)

    lenc--;          

  

  for (int i=0; i<=lenc; i++){

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

    sum[i]%=10;

  }

  if (sum[lenc+1]!=0){

    lenc++;

  }

  for (int i=lenc; i>=0; i--){

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

  }

  return 0;  

}

以上代码的基本思路是将输入的两个数分别转化为数组,并将每位数字相乘的结果相加,从而得到最终的结果。代码中需要注意的一点是要判断结果的每一位是否都为0,如果最高位不为0,则需要输出。同时,由于C++标准库中的整数类型无法存储过大的数字,因此使用字符数组来存储输入的数字串。

需要注意的一点是,以上代码只能处理非负整数的乘法,如果需要进行负数乘法,则需要在输入时判断两个数的正负,并在输出时对结果进行合适的处理。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复