这题其实是个六合一(
不仅代码写得精神污染,这篇题解写得更加精神污染……
以下分析复杂度时设 同阶,并以 代替。
以及 CYJ 题解中对于 的枚举 的推导好像有点问题,不过也许是我太菜了(
所以这里直接枚举 。
第一步:
所以?
所以分别算 即可。
于是这就成了个六合一(
type = 0
预处理 的前缀积和前缀积的逆,然后单次询问 。
type = 1
预处理 的前缀积和前缀积的逆,然后单词询问 。
type = 2
预处理一下 的前缀积即可。
把底数拆出来,看 的部分:
是否有一种似曾相识的感觉?
看看上面那个 的式子,发现可以约分掉这部分。
于是乎那个式子只要求
而这个式子要求
然后两只数论分块加上 预处理出前缀积和前缀积的逆就可以单次询问 了。
(在洛谷要开 O2 才能过,不过常数确实还有优化空间)
代码:
1 |
|













































































































