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