P9118

jijidawang

2023-03-11 15:19:14

Solution

首先特判 $k=1$,令 $f(n)$ 表示 $[1,n]$ 能表示为 $x=a^b$ 形式的整数 $x$ 个数,其中 $a\ge 1,b\ge 2$,那么答案可以简单表述为 $$f(n)-\sum_{i=2}^{k-1}f(\lfloor\sqrt[i]{n}\rfloor)$$ 于是只需要快速计算 $f$,也就是 $k=2$ 的情况 . 考虑对指数容斥,首先如果一个指数不是 square-free 的,那么可以直接忽略它产生的贡献,那么只需要考虑 square-free number 作为指数的情况 . 有 $a^{pq}=(a^p)^q=(a^q)^p$,于是如果指数 $e$ 有 $k$ 个不同的素因子,那么其容斥系数就是 $(-1)^{k+1}$ . 综合上述内容,即可得出容斥系数即为 $-\mu(e)$,则可以写出 $f$ 的表达式: $$f(n)=1-\sum_{i\ge 2}\mu(i)(\lfloor\sqrt[i]{n}\rfloor-1)$$ 直接计算即是 $\Theta(k\log n)$,可以轻松通过,需要注意精度问题 .