大整数乘法
c++实现
思想:竖式计算,整体考虑进位
835 * 49
a:
index: 2 1 0
8 3 5
|
b:
index: 2 1 0
0 4 9
|
结果数组r,835*9先不进位
r:
index: 2 1 0
72 27 45
5*4在10位,r[1] += 20
r:
index: 2 1 0
72 47 45
3*4在百位,r[2] += 12
r:
index: 2 1 0
87 47 45
8*4在千位,r[3] += 32
r:
index: 3 2 1 0
32 84 47 45
乘法过程完毕,进行进位计算,得到最终结果
r:
index:4 3 2 1 0
4 0 9 1 5
具体实现:
#include<iostream>
using namespace std;
void main(){
char a[201], b[201];
int a1[402], b1[402], r[402];
memset(a1, 0, sizeof(a1));
memset(b1, 0, sizeof(b1));
memset(r, 0, sizeof(r));
cin >> a >> b;
int len1 = strlen(a);
int len2 = strlen(b);
int i, j = 0, k = 0;
for(i = len1 - 1; i >= 0; i --){
a1[j ++] = a[i] - '0';
}
j = 0;
for(i = len2 - 1; i >= 0; i --){
b1[j ++] = b[i] - '0';
}
for(i = 0; i < len1; i ++){
k = i;
for(j = 0; j < len2; j ++){
r[k ++] += a1[i] * b1[j];
}
}
int n = 0;//表示进位
int temp;
for(i = 0; i < k; i ++){
temp = r[i] + n;
r[i] = temp % 10;
n = temp / 10;
}
if(n != 0)
cout << n;
for(i = k - 1; i >= 0; i --){
cout << r[i];
}
cout << endl;
}
分享到:
相关推荐
关于大整数乘法的复杂度分析和选择最优的数学公式
大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码 大整数乘法 c++ 代码
设计二进制的大整数乘法,要求利用分治的思想编写递归算法,并可以实现多位数(位数n是2的整数幂)的乘法(利用数组实现),给出程序的正确运行结果。
大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法c语言源文件大整数乘法...
大整数乘法
利用字符串和分治法来实现大整数乘法,内含c++源代码和实验报告说明
大整数乘法(分治法)实验报告,包括问题描述、问题分析、复杂度分析、源代码以及运行结果截图,100%可以运行。
大整数乘法的分治法实现,编程语言使用C++.doc
分治思想大整数乘法 基于王晓东版 算法设计与分析
此课件是为了我的博客中写的那篇利用分治法实现大整数乘法而为大家上传的预习课件,感兴趣的朋友可以到我的CSDN博客(http://blog.csdn.net/zhanghua1816)算法设计与分析模块查看完整的利用分治法实现大整数乘法的...
大整数乘法 数据结构 算法 精度 硬件限制。
自己编写的大整数乘法,可以处理任意大的两个数相乘。C语言编写,仅供参考。
为了实现大整数乘法实现了BigNumber类,通过重载左右移位、加减运算符最后实现了乘法运算符的重载,完成了分治法对大整数乘法的解决!
已 AC HDU 1402,利用fft算法实现大整数乘法
采用数组实现的200位大整数的乘法,代码十分简洁,不到100行。对c语言学习很有帮助~
对算法分析与设计课程中大整数乘法的实现,并实现不同位数的大整数相乘
本程序利用数据结构中分而治之法求解大整数乘法的问题。LargeIntegerMulti_algorithm