高精度乘法C++版
简单模拟版(N^2复杂度):
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <memory.h>
using namespace std;
const int MAX=50001;
char sa[MAX],sb[MAX],ssum[2*MAX];
int lsum;
void bigchenfa(char sa[],char sb[])
{
int a[MAX]={0},b[MAX]={0},sum[MAX*2]={0};
int i,j,k ;
int la=strlen(sa);
int lb=strlen(sb);
lsum=0;
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';
memset(sum,0,sizeof(sum));
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)

本文介绍了高精度乘法的实现,包括C++的简单模拟版(具有平方级复杂度)和使用FFT(快速傅里叶变换)加速的版本,以及Java的实现。通过这些方法,可以高效地处理大整数的乘法操作。
最低0.47元/天 解锁文章
988

被折叠的 条评论
为什么被折叠?



