算法原理:
- 这个算法求的是是高精度整数乘以高精度乘数的积
- 这个算法是模拟人在计算的时候逐位相乘再相加的结果,直接看代码可能有点难以理解,这里我稍微解释一下:Mul函数的两次循环,外循环遍历A,内循环遍历B,将A从低位到高位,逐位与B相乘,将每一位与B相乘的积存入C2,再将C2与C1相加并存入C1,这样C1就存储了A的前i位与B相乘的结果,之后再将C2清零,用来存储A的第i+1位与B相乘的结果,重复此操作,直到将A遍历完为止,这个过程是模仿人在列竖式计算时的过程,如果照着代码自己定义两个因数算一遍的话就很好理解了。
代码实现:
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
vector<int> Mul(vector<int> &A, vector<int> &B); //声明乘法函数
vector<int> Add(vector<int> &A, vector<int> &B); //声明加法函数
int main()
{
string a, b; cin >> a >> b; //输入两个因数
vector<int> A, B;
//将a,b存入vector容器A,B中
for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');
for (int i = b.size(