大整数阶层N!
写了一个版本,还可以优化,比如提取5、2等因子。
#include <bits/stdc++.h>
using namespace std;
const int DEMICAL = 10;
vector<int> multiply(vector<int>& a, int b)
{
vector<int> c;
int t = 0;
for (int i = 0; i < a.size(); i++) {
t += a[i] * b;
c.push_back(t % DEMICAL);
t /= DEMICAL;
}
while (t) {
c.push_back(t % DEMICAL);
t /= DEMICAL;
}
while (c.size() > 1 && c.back() == 0) {
c.pop_back();
}
return c;
}
int main(void)
{
FILE *stream;
freopen_s(&stream, "./hoj19.1.input.txt", "r", stdin);
int n;
cin >> n;
vector<int> a = vector<int>(1, 1);
for (int i = 2; i <= n; i++) {
a = multiply(a, i);
}
for_each(a.rbegin(), a.rend(), [](int num) { cout << to_string(num); });
return 0;
}