zoukankan      html  css  js  c++  java
  • powerful number & ULR #1 校验码

    用 PN 做 min25 模板:

    \(F(p^k) = p^k(p^k-1),F(p)=p(p-1)\)

    构造 \(G(x) = x\varphi(x)\)\(H = F/G\)\(H\) 只在 PN 处有值。

    \[\sum_{i=1}^n F(i) = \sum_{d=1}^n [d\in \text{PN}] H(d) \text{sum}G(n/d) \]


    想要求:

    \[\text{sum}q(\lfloor \dfrac nt \rfloor) \]


    \[q(p^k) = p^{c\lfloor k/2 \rfloor} \]

    \[q(p) = 1 \]

    用 PN 做:

    构造函数 \(G=I,H=q/I\)\(H\) 只在 PN 处有值。

    算一算会发现:

    \[H(p^k) = [k\bmod 2 = 0](p^{ck/2}-p^{ck/2-1}) \]

    于是只在平方数处有值。

    \[\text{sum}q(n) \]

    \[=\sum_{i=1}^{\sqrt n} H(i^2)\lfloor\dfrac{n}{i^2}\rfloor \]

    可以线性筛求 \(H(i^2)\) 前缀和,整除分块,做到 \(n^{1/3}\) .

    怎么求所有的 \(\text{sum}q(\lfloor \dfrac nt \rfloor)\) 呢:

    • 对于阈值 \(<S\) 的线性筛前 \(S\)\(q\)
    • 对于 \(>S\)\(n/S\) 个,直接 \(\sum_{i=1}^{n/S} (n/i)^{1/3} = n/S^{2/3}\) 求。

    \(S=n^{3/5}\) 可以做到 \(n^{3/5}\) 求出以上。


    原问题的转化还是很复杂的:

    \(f(p^k) = p^{k\bmod 2}\)

    \[\sum_{i=1}^n \sum_{j=1}^m q(ij) \]

    \[\sum_{d=1}^n g(d) \sum_{i\in [1,n],d|f(i)} \sum_{j\in [1,m],d|f(j)}q(i)q(j) \]

    $$\Huge \text{Goodbye OI}$$
  • 相关阅读:
    Python if __name__ == "__main__" 的含义
    自己用
    phpstorm && pycharm
    API Design for C++ 一本书值得一看
    std::set 使用
    Using Windows Web Services
    SOA 好好了解下
    NI Measurement Studio Enterprise 8.6
    那天看看
    内存映射 那天自己改改
  • 原文地址:https://www.cnblogs.com/Rainbowsjy/p/15654234.html
Copyright © 2011-2022 走看看