• bzoj2820: YY的GCD


    • 题意
      给定(n,m(1 leqslant n,m leqslant 10000000)),求(1leqslant 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}^{lfloorfrac{n}{p} floor}sum_{j=1}^{lfloorfrac{m}{p} floor}{[gcd(i,j)=1]} \ = sum_{p in P}sum_{i=1}^{lfloorfrac{n}{p} floor}sum_{j=1}^{lfloorfrac{m}{p} floor}sum_{d|gcd(i,j)}mu(d) \ = sum_{p in P}sum_{i=1}^{lfloorfrac{n}{p} floor}sum_{j=1}^{lfloorfrac{m}{p} floor}sum_{d|i,d|j}mu(d) \ = sum_{p in P} sum_{d=1}^{min(n,m)} mu(d)iggllfloorfrac{n}{pd}iggr floor iggllfloorfrac{m}{pd}iggr floor \ = sum_{T}^{min(n,m)}iggllfloorfrac{n}{T}iggr floor iggllfloorfrac{m}{T}iggr floor 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(nloglog n))的时间内求出
    至此,问题在(O(nloglog n+Tsqrt{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 e p')时,值为0.
    所以此时(f(px) = mu(x))
    (p ot|x),则$$f(px) = sum_{p'|x}mu(frac{xp}{p'}) + mu(x) = -f(x) + mu(x)$$
    至此,问题在(O(n+Tsqrt{n}))内解决

  • 相关阅读:
    【好文收藏】家庭
    CSS选择器
    高等数学
    生也有涯而知也无涯,以有涯应无涯,殆矣
    navicat连接MySQL8+时出现2059错误解决方法
    Python 自己常用的方法
    Vue中变量名前加三个点代表什么意思
    Python3 locals函数的妙用
    python元类的应用
    vue + Element UI 之 rules校验
  • 原文地址:https://www.cnblogs.com/showson/p/5403443.html
Copyright © 2020-2023  润新知