AcWing_793 高精度乘法

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;
}