top1编程
← 返回题目
题解

计算累乘之和

1 条题解

  • 0
    @ 2026-8-5 16:07:42

    解题思路

    “累乘”就是从 1 一直乘到 n,也就是 1 × 2 × 3 × … × n。题目要求写一个函数 mul(n),返回 1 到 n 的累乘结果。

    例如 mul(3) = 1 × 2 × 3 = 6。

    实现累乘的套路:

    1. 先让结果 r = 1(因为任何数乘 1 都不变);
    2. 用循环 i 从 1 到 n,每次让 r = r × i;
    3. 循环结束后 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