文章目录
1.数组
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
char A[N];
int a[N], b, c[N];
int main()
{
cin >> A >> b;
int la = strlen(A);
// 逆序存储
for (int i = 0; i < la; i++)
{
a[la - i] = A[i] - '0';
}
int lc = 0;
for (int i = 1, t = 0; i <= la || t; i++)
{
if (i <= la)
{
t += a[i] * b;
}
c[++lc] = t % 10;
t /= 10;
}
// 删除前导0
while (lc > 1 && c[lc] == 0)
{
lc--;
}
// 逆序输出
for (int i = lc; i > 0; i--)
{
cout << c[i];
}
cout << endl;
return 0;
}
2.vector(推荐)
利用 vector 逆序存储大整数,将高精度乘低精度封装成函数,方便在复杂的题目中直接调用。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> mul(vector<int> &a, int b)
{
vector<int> c;
for (int i = 0, t = 0; i < a.size() || t; i++)
{
if (i < a.size())
{
t += a[i] * b;
}
c.push_back(t % 10);
t /= 10;
}
// 删除前导0
while (c.size() > 1 && c.back() == 0)
{
c.pop_back();
}
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--)
{
cout << c[i];
}
cout << endl;
return 0;
}