直接算出阶乘即可~
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
int main() {
int n;
while (~scanf("%d", &n)) {
int ans[100001] = {0};
ans[0] = 1;
int index = 1;
for (int i = 2; i <= n; ++i) {
int carry = 0;
for (int j = 0; j < index; ++j) {
ans[j] = i * ans[j] + carry;
carry = ans[j] / 10;
ans[j] %= 10;
}
if (carry) {
ans[index++] = carry % 10;
carry /= 10;
}
}
for (int i = 0; i < index; ++i) {
if (ans[i] != 0) {
printf("%d\n", ans[i]);
break;
}
}
}
return 0;
}