zoukankan      html  css  js  c++  java
  • 快乐的一天从AC开始 | 20210629 | P2257

    题目链接

    AC代码

    看到题面想到了莫比乌斯反演模板题,即求(sum_{x = 1}^{N}sum_{y = 1}^{M} [gcd(x, y) = k]),其中(k)为指定常数。

    这题将(k)的取值变为了素数,不过还是按照常规套路推一下式子:

    [egin{aligned} ans &= sum_{p in {P}} sum_{x = 1}^{N} sum_{y = 1}^{M} [gcd(x, y) = p] \ &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} [gcd(x, y) = 1] \ end{aligned} ]

    根据(varepsilon = mu ast 1)有:

    [egin{aligned} ans &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} [gcd(x, y) = 1] \ &= sum_{p in {P}} sum_{x = 1}^{lfloor frac{N}{p} floor} sum_{y = 1}^{lfloor frac{M}{p} floor} sum_{d mid gcd(x, y)} mu(d) \ &= sum_{p in {P}} sum_{d} mu(d) sum_{x = 1}^{lfloor frac{N}{p} floor} [d mid x] sum_{y = 1}^{lfloor frac{M}{p} floor} [d mid y] \ &= sum_{p in {P}} sum_{d} mu(d) lfloor frac{N}{pd} floor lfloor frac{M}{pd} floor end{aligned} ]

    到这一步常规套路就推不下去了,然后根据这个式子枚举(p)去算的话铁定会超时。

    (T = pd),有

    [egin{aligned} ans &= sum_{p in {P}} sum_{d} mu(d) lfloor frac{N}{pd} floor lfloor frac{M}{pd} floor \ &= sum_{T} lfloor frac{N}{T} floor lfloor frac{M}{T} floor sum_{t mid T, t in P} mu(frac{T}{t}) end{aligned} ]

    前半部分可以数论分块,后半部分可以线性筛预处理。

    现在就可以(O(N) sim O(sqrt{N}))做了。

  • 相关阅读:
    个人作业-数组3
    Java编程思想
    19年春第三周学习
    个人作业-数组2
    自我介绍
    个人作业-数组
    19春第二周学习心得
    fiddler--华为手机下载安装fiddler证书
    RF接口测试----post请求
    RF接口测试----get请求
  • 原文地址:https://www.cnblogs.com/zengzk/p/14948491.html
Copyright © 2011-2022 走看看