题目描述
[题目链接](http://acm.hdu.edu.cn/showproblem.php?pid=6537)
设 $f(n,k)$ 为 $\prod_{i=1}^{k}a_i=n$ 的方案数,其中 $a_i>1$
比如说 $n=6,k=2$ 的时候,有 $6=2 \times 3 = 3 \times 2$,因此 $f(6,2)=2$
那么你需要求出 $\sum_{i=1}^{n}f(i,k)$ 在模 $10^9+7$ 意义下的值
数据范围:$1 \le n \le 2^{30}, 1 \le k \le 30$
题解
首先不管 $a_i>1$,也就是只需要要求 $a_i \ge 1$,设 $g(n,k)$ 表示 $\prod_{i=1}^{k}a_i=n$ 的方案数
然而这个好像是个大众皆知的经典模型……比如[牛客小白月赛9 J](https://ac.nowcoder.com/acm/contest/275/J)……
由于质因子互不干涉,因此 $g(n,k)$ 是一个积性函数
考虑 $g(p^e,k)$,相当于把 $e$ 个相同的球放到 $k$ 个不同的盒子的方案数,也是 $\sum_{i=1}^{k}x_i=e$ 的非负整数解的个数
即 $g(p^e,k)={e + k - 1 \choose k-1}$
那么回到计算 $f(n,k)$,考虑容斥有多少个 $a_i=1$,即:
$$
\begin{aligned}
f(n,k)
=&\sum_{i=0}^{k} {k \choose i} (-1)^{i} g(n,k-i) \\
=&\sum_{i=0}^{k} {k \choose i} (-1)^{k-i}g(n,i)
\end{aligned}
$$
求和后为:
$$
\begin{aligned}
\sum_{i=1}^{n} f(i,k)
= &\sum_{i=1}^{n}\sum_{j=0}^{k} {k \choose j} (-1)^{k-j} g(i,j) \\
= &\sum_{j=0}^{k} {k \choose j} (-1)^{k-j} \sum_{i=1}^{n} g(i,j)
\end{aligned}
$$
由于 $g(n,k)$ 是个积性函数,找个啥啥筛应该都能过吧……
实际上不需要这么麻烦……
直接用 $f(n,k)$ 的定义就好了,那么就考虑最后一个位置放多少就行了,即:
$$
\begin{aligned}
f(n,k)=\sum_{d|n \land d \ne 1} f\left( \frac{n}{d},k-1\right)
\end{aligned}
$$
可以得到:
$$
\begin{aligned}
F_{k+1}(n)
=& \sum_{i=1}^{n}f_{k+1}(i) \\
=& \sum_{i=1}^{n}\sum_{j|i \land j \ne i} f_{k}(j) \\
=& \sum_{i=1}^{n}\sum_{j|i \land j \ne 1} f_{k}\left(\frac{i}{j}\right) \\
=&\sum_{j=2}^{n} \sum_{i=1}^{n} [j|i] \cdot f_k \left( \frac{i}{j} \right) \\
=&\sum_{j=2}^{n} \sum_{i=1}^{\left \lfloor \frac{n}{j} \right\rfloor} f_k \left( i \right) \\
=&\sum_{j=2}^{n} F_k\left( \left\lfloor \frac{n}{j} \right\rfloor \right)
\end{aligned}
$$