Description
题目链接:Luogu 2257
求如下式子的值:
本题 $T$ 组数据。
数据范围:$T=10^4$,$n,m\le 10^7$
Solution
以下所有过程中默认 $n\le m$!
首先我们很自然想到枚举质数
根据套路提出 $p$
替换 $\gcd$ 得到
枚举 $d$
由于 $x$ 以内 $d$ 的倍数有 $\left\lfloor\frac{x}{d}\right\rfloor$ 个
这个式子直接求解的复杂度为 $O(\text{质数个数}*\sqrt{n}))$ 的,无法通过此题!
考虑优化:令 $k=pd$,代入得
枚举 $k$
设 $f(x)=\sum_{p\in\text{prime},p\mid x}\mu(\frac{x}{p})$ ,询问转化为
如果我们能求出 $f$ 的前缀和就能解决问题了,因此考虑对线性筛!
$f(x)=\sum_{p\in\text{prime},p\mid x}\mu(\frac{x}{p})$,设 $x$ 的最小质因子为 $y$,即 $x=i\times y$
-
$x\in\text{prime}$:显然有 $f(x)=\mu(1)=1$
-
$i\bmod y=0$,即 $x$ 有多个最小质因子:
- 当 $i$ 没有多个相同质因子时,那么当且仅当枚举的 $p=y$ 时,$\mu(\frac{x}{p})=\mu(i)$ 不为 $0$,故 $f(x)=\mu(i)$
- 当 $i$ 也有多个相同质因子时,那么对于任何枚举的 $p$,都有 $\mu(\frac{x}{p})$ 的值都为 $0$,此时仍然有 $\mu(\frac{x}{p})=\mu(i)$,故 $f(x)=\mu(i)$
-
$i\bmod y\neq 0$,即 $x$ 有一个最小质因子:
因为有 $f(i)=\sum_{p\in\text{prime},p\mid i}\mu(\frac{i}{p})$,$f(x)=\sum_{p\in\text{prime},p\mid x}\mu(\frac{i\times y}{p})$
根据 $\mu$ 的线性筛过程,有 $\mu(\frac{i\times y}{p})=-\mu(\frac{i}{p})$,因此 $f(i)$ 中的每一项能都在 $f(x)$ 中找到对应的一项。而 $x$ 比 $i$ 多且仅多了一个质因子 $y$,因此 $f(x)$ 比 $f(i)$ 多了一项 $\mu(\frac{i\times y}{y})=\mu(i)$,故 $f(x)=-f(i)+\mu(i)$
综上所述,我们可以得到 $f$ 的线性筛方程
通过求 $f$ 的前缀和,我们可以利用数论分块通过本题!
时间复杂度:$O(n+T\sqrt{n})$
Code
1 |
|