AcWing
793. 高精度乘法
实质上是,使用数组模拟乘法运算的过程。注意补全最后的进位,以及消除结果数组中的前导0
.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<int> A;
string a;
int b;
vector<int> mul(vector<int> &A, int b){
vector<int> C;
int sA = (int)A.size();
int t = 0;
for(int i = 0; i <= sA - 1 || t; i ++){
if(i <= sA - 1) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while((int)C.size() >= 2 && !C.back()) C.pop_back();
return C;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> a >> b;
int sa = (int)a.size();
for(int i = sa - 1; i >= 0; i --) A.push_back(a[i] - '0');
vector<int> C = mul(A, b);
int sC = (int)C.size();
for(int i = sC - 1; i >= 0; i --) cout << C[i];
return 0;
}