步骤
- 将b按位与A中每一位相乘,并将结果存在t中。
- c是结果数组,每次b与A的某一位乘完加入到t中后,都将t的最后一位加入到c中。
- b与A每一位乘完后,如果t还有剩余,将t从低位依次加入到c中。
- 去掉c中的前导零。
细节
c.back()
:返回vector数组最后一个元素的值。
c.pop_back()
:将vector数组最后一个元素删除。
c++
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>
const int N = 1e5 + 10;
using namespace std;
typedef vector<int> VT;
string a;
int b;
VT mul(VT A, int b)
{
int t = 0;
VT C;
for (int i = 0; i < A.size(); ++ i)
{
t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while (t)
{
C.push_back(t % 10);
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main()
{
cin >> a >> b;
VT A;
for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
VT C = mul(A, b);
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
return 0;
}