思路
- 把乘数b看作一个整体来和A中的每一位相乘
- 保存的每一位 t += ( A[i] * b ) % 10
- 进位 t = t / 10
- 直到 t == 0 或者 A 每一位都乘完为止
- 不要忘记 b 是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;
C.push_back(t % 10);
t /= 10;
}
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);
if(b == 0)
{
cout << 0 << endl;
}
else
{
for(int i = C.size() - 1; i >= 0; i --)
printf("%d", C[i]);
}
return 0;
}