题解
计算累乘之和
1 条题解
-
0
解题思路
“累乘”就是从 1 一直乘到 n,也就是 1 × 2 × 3 × … × n。题目要求写一个函数 mul(n),返回 1 到 n 的累乘结果。
例如 mul(3) = 1 × 2 × 3 = 6。
实现累乘的套路:
- 先让结果 r = 1(因为任何数乘 1 都不变);
- 用循环 i 从 1 到 n,每次让 r = r × i;
- 循环结束后 r 就是答案。
题目说 x、y、z 都是小于 10 的正整数,所以最大的 mul(9) = 362880,用 int 存完全没问题。
最后把 mul(x)、mul(y)、mul(z) 三个结果加起来输出。
验证样例 2 3 4:
- mul(2) = 1 × 2 = 2
- mul(3) = 1 × 2 × 3 = 6
- mul(4) = 1 × 2 × 3 × 4 = 24
- 总和 = 2 + 6 + 24 = 32,和样例一致。
参考代码
// P4595 计算累乘之和:mul(n) 计算 1~n 的累乘结果,三个累乘结果相加 #include <iostream> using namespace std; // 计算 1~n 之间所有整数的累乘结果 int mul(int n) { int r = 1; // 累乘结果从 1 开始 for (int i = 1; i <= n; i++) r *= i; // 从 1 一直乘到 n return r; } int main() { int x, y, z; cin >> x >> y >> z; // 输入三个正整数 cout << mul(x) + mul(y) + mul(z) << endl; // 三个累乘结果相加 return 0; }复杂度分析
mul(n) 要循环 n 次,时间大约是 O(n)。x、y、z 都小于 10,所以三个函数最多循环约 30 次,非常快。只用几个变量,空间是 O(1)。
- 1