1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int ans[100005] = {1, 1}; // 存放阶乘,ans[0]存放位数,倒序存放每一位数字 int jw[100005]; // 进位数组 int n; int main() { cin >> n; // 输入n for (int i = 1; i <= n; i++) { // 从1到n计算阶乘 // 对每一位进行乘法运算,并处理进位 for (int j = 1; j <= ans[0]; j++) { // 遍历当前阶乘的每一位 ans[j] = ans[j] * i + jw[j]; // 计算每一位的乘积,加上进位 jw[j] = 0; // 重置进位 if (ans[j] >= 10) { // 如果当前位大于等于10,需要进位 jw[j + 1] += ans[j] / 10; // 进位到下一位 ans[j] %= 10; // 保留个位 if (j == ans[0]) ans[0]++; // 如果进位到当前位末尾,位数加一 } } } // 从高位到低位输出结果 for (int i = ans[0]; i >= 1; i--) { cout << ans[i]; } cout << endl; // 输出换行 return 0; }
- 1
信息
- ID
- 652
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 23
- 已通过
- 3
- 上传者