给定$n$,求有多少正整数数对 $(x,y)$ 满足 $\frac{1}{x} + \frac{1}{y} = \frac{1}{n!}$
$(n\le 10^{6})$
题目链接
题解
- 令 $\rm n!=z$
- 故转化为 $\frac{1}{x} + \frac{1}{y} = \frac{1}{z}$。
- 显然 $x,y$ 都要大于 $z$,故设 $x=z+a,y=z+b$。
- 化简可得:$z^2=a·b$
- 问题就转化为求 $z^2$ 的约数个数。
- $z^2$ 的约数即为 $z$ 每个约数的 $2$ 倍。
- 求 $[1,n]$ 每个数的约数个数,可以直接暴力预处理素数,然后算 $[1,n]$ 中素数的倍数。
- 另外我们知道 线性筛法 每个合数只会被其最小的质数所筛掉,可以通过记录每个数的最小合数递归计算。
- 时间复杂度 $O(n)$。
代码
1 |
|