一、算法原理
A是高精度,数据类型是vector<int>,b是低精度,数据类型是int。算法过程为:从A的低位开始,每一位与b相乘,第 i 位的进位用 t[i] 表示,第 i 位的结果用C[i]表示,其中
t[i+1] = (A[i] * b + t[i]) / 10;
C[i] = (A[i] * b + t[i]) % 10。
二、代码
//C = A * b,A >= 0, b >= 0
vector<int> mul_1(vector<int> &A, int b){
int t = 0, rst = 0;
vector<int> C;
for(int i = 0; i < A.size(); i++){
rst = A[i] * b + t;
C.push_back(rst % 10);
t = rst / 10;
}
if(t)
C.push_back(t);
return C;
}
vector<int> mul_2(vector<int> &A, int b){
int t = 0;
vector<int> C;
for(int i = 0; i < A.size() || t; i++){
if(i < A.size())
t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
return C;
}