include [HTML_REMOVED]
using namespace std;
int main() {
int N;
// 预计算1到1000的所有阶乘
vector[HTML_REMOVED]> factorials(1001); // 存储1到1000的阶乘
factorials[1] = {1}; // 1! = 1
for (int i = 2; i <= 1000; i) {
vector[HTML_REMOVED] current = factorials[i - 1]; // 获取(i-1)!的结果
int carry = 0; // 进位
for (int j = 0; j < current.size(); j) {
int product = current[j] * i + carry; // 当前位乘以i加上进位
current[j] = product % 10; // 取个位数
carry = product / 10; // 计算进位
}
while (carry) { // 处理剩余的进位
current.push_back(carry % 10);
carry /= 10;
}
factorials[i] = current; // 存储i!的结果
}
// 处理输入
while (cin >> N) {
// 输出预计算的阶乘结果
for (int i = factorials[N].size() - 1; i >= 0; i--) {
cout << factorials[N][i];
}
cout << endl;
}
return 0;
}
提前计算好1-1000的阶乘,然后用二维数组存储起来,当有输入的时候直接输出