提交时间:2024-08-20 21:56:22

运行 ID: 173597

#include <iostream> using namespace std; int main() { int n; cin >> n; // 读取输入的数字 n int digits[10000]; // 用于存储阶乘结果的每一位数字 int digitCount = 1; // 结果的位数 digits[0] = 1; // 初始化为 1 for (int i = 1; i <= n; i++) { // 从 1 到 n 进行循环 int carry = 0; // 进位 for (int j = 0; j < digitCount; j++) { // 遍历结果的每一位 int product = digits[j] * i + carry; // 计算当前位与 i 的乘积加上进位 digits[j] = product % 10; // 存储当前位的数字 carry = product / 10; // 计算新的进位 } while (carry > 0) { // 如果还有进位 digits[digitCount++] = carry % 10; // 存储进位的数字 carry /= 10; // 更新进位 } } cout << n << "!="; for (int i = digitCount - 1; i >= 0; i--) { // 输出结果 cout << digits[i]; } cout << endl; return 0; }