bzoj2820: YY的GCD
-
题意
给定\(n,m(1 \leqslant n,m \leqslant 10000000)\),求\(1\leqslant x \leqslant n\), \(1 \leqslant y \leqslant m\)且\(\gcd(x, y)\)为质数的\((x, y)\)有多少对.
\(T(\leqslant 10000)\)组询问 -
题解
\[ans = \sum_{p \in P}\sum_{i=1}^{n}\sum_{j=1}^{m}{[\gcd(i,j)=p]} \\
= \sum_{p \in P}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}{[\gcd(i,j)=1]} \\
= \sum_{p \in P}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}\sum_{d|\gcd(i,j)}\mu(d) \\
= \sum_{p \in P}\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{p}\rfloor}\sum_{d|i,d|j}\mu(d) \\
= \sum_{p \in P} \sum_{d=1}^{\min(n,m)} \mu(d)\biggl\lfloor\frac{n}{pd}\biggr\rfloor \biggl\lfloor\frac{m}{pd}\biggr\rfloor \\
= \sum_{T}^{\min(n,m)}\biggl\lfloor\frac{n}{T}\biggr\rfloor \biggl\lfloor\frac{m}{T}\biggr\rfloor \sum_{p \in P, p|T}\mu(\frac{T}{p})\]
令$$f(T)=\sum_{p \in P, p|T}\mu(\frac{T}{p})$$
那么对\(f(T)\)求前缀和则问题可以在\(O(\sqrt{n})\)的时间内解决。
显然\(f(T)\)可以通过类似埃式筛法在\(O(n\log\log n)\)的时间内求出
至此,问题在\(O(n\log\log n+T\sqrt{n})\)内解决
————————————————————————————————————————
然而\(f(T)\)仍然可以通过线性筛得到:
现在已知\(f(x) = \sum_{p'|x}\mu(\frac{x}{p'})\)
考虑\(f(px)\)
若\(p|x\),则$$f(px) = \sum_{p'|x}\mu(\frac{xp}{p'})$$
显然,当\(p=p'\)时值为\(\mu(x)\),当\(p \ne p'\)时,值为0.
所以此时\(f(px) = \mu(x)\)
若\(p\not|x\),则$$f(px) = \sum_{p'|x}\mu(\frac{xp}{p'}) + \mu(x) = -f(x) + \mu(x)$$
至此,问题在\(O(n+T\sqrt{n})\)内解决
原文出处http://www.cnblogs.com/showson/