zoukankan      html  css  js  c++  java
  • [BZOJ 2820] YY的GCD

    题意

    求下式的值:

    [sum_{i=1}^nsum_{j=1}^m mathbb{P}(gcd(i,j)) ]

    其中 (mathbb{P}(x))(x) 为质数时为 (1), 否则为 (0).

    题解

    反演真棒

    [egin{align} f(x)&= sum_i^Nsum_j^M[gcd(i,j)=x] \ F(x)&= sum_{x|m}f(m) \ &=left lfloor frac N x ight floorleft lfloor frac M x ight floor \ ext{Ans}&=sum_p f(p) \ &=sum_p sum_{p|m}F(m)mu(frac m p) \ &=sum_p sum_{p|m}left lfloor frac N m ight floorleft lfloor frac M m ight floor muleft(frac m p ight) \ &p|mRightarrow m=pd \ &=sum_p sum_{d=1}^{left lfloor frac N p ight floor}left lfloor frac N {pd} ight floorleft lfloor frac M {pd} ight floor mu(d) \ & ext{let} T = pd Rightarrow d = frac T p\ &=sum_{T=1}^N sum_{p|T} left lfloor frac N {T} ight floorleft lfloor frac M {T} ight floor mu left(frac T p ight)\ &=sum_{T=1}^N left lfloor frac N {T} ight floorleft lfloor frac M {T} ight floor sum_{p|T} mu left(frac T p ight) end{align} ]

    没有GCD就没有mu

    搞出GCD来然后倍数反演, 然后xjb倒腾求和号把下取整部分的枚举翻到最外层, 然后筛里层就星了

    里层就是

    [g(x)=sum_{p | x}muleft(frac x p ight) ]

    里层的话设当前基数为 (i), 要乘上去的质数为 (p), 要筛的值为 (t=pi), 则当 (p ot mid i) 的时候会给这个和式增加一项 (muleft(frac t p ight)) 也就是 (mu(i)), 同时原来的求和项中所有的 (mu) 值都会因为新质因子的加入而被取反, 所以 (g(t)=mu(i)-g(i)). 而当 (p mid i) 的时候, 因为加入了平方因子, 那么所有的没有除去当前 (p)(frac t {p'}) 都会包含一个 (p^2) 因子, 所以 (mu) 值为 (0), 唯一还能对这个和式产生贡献的就只有 (mu left (frac t p ight )) 也就是 (mu (i)) 了. 于是这种情况下 (g(t)=mu(i)).

  • 相关阅读:
    马拉车算法
    n皇后问题(回溯算法)
    求解最大升序子序列问题(动态规划)
    利用二进制进行快速乘法:俄罗斯农名乘法
    Redis、MySQL、Hive、Hbase的区别,数据库和数据仓库的区别
    MySQL数据库
    算法工程师的Bug与Debug
    复习KNN并实现
    文本领域数据增强技术
    Fasttext模型总结
  • 原文地址:https://www.cnblogs.com/rvalue/p/10236977.html
Copyright © 2011-2022 走看看