一个高精度数字乘以一个低精度数字
将高精度数字存储到数组中,拿高精度中的每一位数乘以这个低精度的数字
首先要算当前的位上的数字是多少,t += A[i] * b;
算出本位上的留的个位数是多少:C.push_back(t % 10);
向上的进位是多少:t /= 10;
#include <iostream>
#include <vector>
using namespace std;
vector<int> mul(vector<int> A,int b){
vector<int> C;
int t = 0;//进位,最开始进位为0
for(int i = 0;i < A.size() || t;i ++){
if(i < A.size()) t += A[i] * b;//之前的进位+当前位上乘以低精度数字
C.push_back(t % 10);//取个位
t /= 10;//向高位的进位
}
while(C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main(){
string a;
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 --) printf("%d",C[i]);
return 0;
}