用高精度的每一位分别乘低精度然后再加上进位得到t,然后将t%10后的数当做所乘位的最后数,t/10后的数作为进位的数。初始时进位为0。
#include<iostream>
#include<vector>
using namespace std;
vector<int> mul(vector<int>&a,int b){
vector<int> c;
int t=0;
for(int i=0;i<a.size()||t;i++){
if(i<a.size())t=a[i]*b+t;
c.push_back(t%10);
t=t/10;
}
return c;
}
int main(){
string A;
int b;
cin>>A>>b;
vector<int> a,c;
for(int i=A.size()-1;i>=0;i--)a.push_back(A[i]-'0');
c=mul(a,b);
for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
return 0;
}
注:所学来自acwing