#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e7 + 10;
int ans[N];
int maxn = 1;
int n;
void fac(int x) {
for (int i = 1; i <= maxn; i++) {
ans[i] *= x;
}
int res = maxn;
for (int i = 1; i <= maxn; i++) {
if (ans[i] >= 10000) {
int tmp = ans[i];
ans[i] %= 10000;
ans[i + 1] += tmp / 10000;
if (i == maxn)
res++;
}
}
while (ans[res] >= 10000) {
int tmp = ans[res];
ans[res] %= 10000;
ans[++res] += tmp / 10000;
}
maxn = res;
}
void Print() {
printf("%d", ans[maxn]);
for (int i = maxn - 1; i >= 1; i--) {
if (ans[i] >= 0 && ans[i] <= 9)
printf("000");
else if (ans[i] >= 10 && ans[i] <= 99)
printf("00");
else if (ans[i] >= 100 && ans[i] <= 999)
printf("0");
printf("%d", ans[i]);
}
printf("\n");
}
void solve() {
ans[1] = 1;
for (int i = 1; i <= n; i++) {
fac(i);
}
}
int main() {
scanf("%d", &n);
solve();
Print();
return 0;
}
大数阶乘 (至少10000)
最新推荐文章于 2024-09-16 17:46:36 发布