2 条题解
-
1
oistream (oistream) LV 8 MOD @ 4 年前
此题解自 P1108 移植,作者:bfw
我想补充一个所谓 “推式子” 的方法。
整除分块, 一波带走。
-
14 年前@
算法1
暴力枚举,时间 。
算法2
利用约数数量公式。若
则
其中 是素数。
用线Doge性Doge筛筛素数,然后累乘。
这样解看起来是高明了点,但时间复杂度依然是 ,从这个角度看依然没有改进。
算法3
换个角度考虑。考虑 每个数作为约数的次数 。
- ,显然是任意一个数的约数,共出现了 次。
- ,是所有被 整除的数的约数,共出现了 次。
- ,是所有被 整除的数的约数,共出现了 次。
- ,仅为 的约数,出现了 次。
所以
依据此公式,得到 的做法,代码不复杂,此处不放了。大家也可以口胡。
原题就到此为止了,然鹅这道题是明显不够的。
算法 4
用整除分块(模板题:P1100),可以将复杂度降至 。足以通过本题。
- 1