采用递推公式:N!=N*(n-1)!
#include<stdio.h> //坑
#include<math.h> //坑
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
vector<int> v[1010];
int main() {
int n;
scanf("%d", &n);
v[0].push_back(1);
for (int i = 1; i <= 1000; i++) {
int remain = 0;
for (unsigned int j = 1; j <= v[i - 1].size(); j++) {
remain += v[i - 1][j - 1] * i;
v[i].push_back(remain % 10);
remain /= 10;
}
//模拟乘法到了第v[i-1]以后,需要把remain中的值转换为单个数字存进v[i]中。
while (remain != 0) {
v[i].push_back(remain % 10);
remain /= 10;
}
}
int len = v[n].size();
for (int i = len; i >= 1 ; i--) {
printf("%d", v[n][i - 1]);
}
}