21xrx.com
2025-07-15 15:53:37 Tuesday
登录
文章检索 我的文章 写文章
C++高精度乘法算法代码
2023-07-01 14:38:49 深夜i     30     0
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++标准库中的整数类型无法存储过大的数字,因此使用字符数组来存储输入的数字串。

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

  
  

评论区