1 条题解
-
0
📝 题目大意
给定非负整数 ,计算 的值。其中 ,。本质上就是求 的阶乘 。
💡 解题思路
-
题目分析:根据定义,,且 。数据范围 ,,完全在
int范围内,无需考虑溢出。 -
算法推导:使用迭代法计算阶乘。初始化
ans = 1,然后遍历 从 到 ,每次令ans *= i。当 时,循环不执行,ans保持为 ,恰好满足 。 -
边界与细节:唯一需要注意的边界是 ,此时循环不进入,直接输出 ,与定义一致。无需处理任何特殊情况。
⏱️ 复杂度分析
- 时间复杂度:,只需一次从 到 的循环。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main() { int n; scanf("%d", &n); // 读入非负整数 N int ans = 1; // 初始化答案为 1(对应 f(0) = 1) for (int i = 1; i <= n; i++) ans *= i; // 迭代累乘,计算 N 的阶乘 printf("%d\n", ans); // 输出结果 return 0; } -
- 1
信息
- ID
- 644
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者