AcWing 793. 高精度乘法

https://www.acwing.com/problem/content/795/

#include<bits/stdc++.h>
using namespace std; 
//A*b   一个高精度的数乘一个低精度的数
vector<int> mul(vector<int> &A, int b)
{
    //这个乘法有点和平时的不同,这个是用较长的数字的每一位,直接去乘小的数字 
    vector<int>C;  //答案 
    int t=0;  //进位 
    for(int i=0;i<A.size()||t;i++)  //当i还没有循环完或者进位t还没有处理完 ,就一直做 
    {
        if(i<A.size())  t+=A[i]*b;   //如果A还没有遍历完  那么t就加上A【i】*b 
        C.push_back(t%10);     //当前这一位就是t%10 
        t/=10;  //进位 
    }
    return C;
}
int main()
{
    string a;  //a很长,数位多     b很小,数位少 
    int b;
    cin>>a>>b;
    vector<int>A;
    for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    auto C=mul(A,b);
    for(int i=C.size()-1;i>=0;i--) cout<<C[i];
    return 0;
 } 
原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11757285.html