Description
定义新运算 “$!$” ,运算规则如下:
$a!b = a!(b-1) \times (a-1)!b ( a > 0,b > 0 )$
$a!b = 1 ( a = 0 )$
$a!b = a ( b = 0 )$
。
给你两个正整数 $n$ 和 $k$ ,现在请你求出 $n!k$ 的因子个数 $\mod (10^9+9)$ 。
$1\leq n\leq 1000,1 \leq k \leq 100$ 。
Solution
考虑使用 递推 来解题。
设 $f[i][j][k]$ 表示 $i ! j$ 分解质因数后的第 $k$ 个 质数 的指数的值,那显然有:
$f[i][j][k]=(f[i-1][j][k]+f[i][j-1][k])\mod(10^9+9)$
。
若一个数 $n=p_1^{k_1} \times p_2^{k_2} \times … \times p_m^{k_m}$ ,其中 $p_1$ ~ $p_m$ 均为质数,那么 $n$ 的因子个数为 $\prod_{i=1}^m (k_i+1)$ 。
所以我们可以得出答案等于 $(\prod_{i=1}^{n}(f[n][k][i]+1)) \mod;(10^9+9)$ 。
记得要中途取模!
时间复杂度 $O(nk)$,具体细节详见 代码 部分。
然后这道题目就做完了。
Code
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |