3792. 递增乘积块之和 🔒
题目描述
给定一个整数 n。
一个序列的形成如下:
- 第
1块包含1。 - 第
2块包含2 * 3。 - 第
i块是之后i个连续整数的乘积。
令 F(n) 为前 n 块之和。
返回一个整数表示 F(n) 模上 109 + 7。
示例 1:
输入:n = 3
输出:127
解释:
- 块 1:
1 - 块 2:
2 * 3 = 6 - 块 3:
4 * 5 * 6 = 120
F(3) = 1 + 6 + 120 = 127
示例 2:
输入:n = 7
输出:6997165
解释:
- 块 1:
1 - 块 2:
2 * 3 = 6 - 块 3:
4 * 5 * 6 = 120 - 块 4:
7 * 8 * 9 * 10 = 5040 - 块 5:
11 * 12 * 13 * 14 * 15 = 360360 - 块 6:
16 * 17 * 18 * 19 * 20 * 21 = 39070080 - 块 7:
22 * 23 * 24 * 25 * 26 * 27 * 28 = 5967561600
F(7) = 6006997207 % (109 + 7) = 6997165
提示:
1 <= n <= 1000
解法
方法一:模拟
我们可以直接模拟每一块的乘积并累加到答案中。需要注意的是,由于乘积可能会非常大,我们需要在每一步计算时对结果取模。
时间复杂度 \(O(n^2)\),空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |