• 欧拉反演


    引入

    你遇到了一道数论题:

    \(S=\sum\limits_{i=1}^n\sum\limits_{j=1}^m\gcd(i,j)\) 的值,对 \(19260817\) 取膜,\(1\le n\le m\le 10^5\)

    “这不是莫比乌斯反演裸题吗?”

    \(\begin{aligned} S&=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)\\ &=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\ &=\sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1]\\ &=\sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{t|\gcd(i,j)}\mu(t)\\ &=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\sum_{i=1}^{n/d}[t|i]\sum_{j=1}^{m/d}[t|j]\\ &=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\left\lfloor\dfrac{n}{dt}\right\rfloor\left\lfloor\dfrac{m}{dt}\right\rfloor \end{aligned}\)

    \(T=dt\)

    \(\begin{aligned} S&=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\left\lfloor\dfrac{n}{dt}\right\rfloor\left\lfloor\dfrac{m}{dt}\right\rfloor\\ &=\sum_{T=1}^n\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\sum_{t\mid T}\mu(t)(T/t)\\ &=\sum_{T=1}^n\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\varphi(T) \end{aligned}\)

    至此可以 \(O(n)\) 计算

    你有一个朋友,然后你看到了他的做法:

    \(\begin{aligned} S&=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)\\ &=\sum_{i=1}^n\sum_{j=1}^m\sum_{d|\gcd(i,j)}\varphi(d)\\ &=\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^n[d|i]\sum_{j=1}^m[d|j]\\ &=\sum_{d=1}^{n}\varphi(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor \end{aligned}\)

    其中用到了欧拉函数的一条性质:\(\sum\limits_{d\mid n}\varphi(d)=n\)
    你看不懂,但大受震撼

    朋友告诉你,运用这条性质推式子的过程被称为欧拉反演

    欧拉反演

    这东西的核心只有上面那一条性质,适用范围也比较小(感觉都不应该称为反演,,实在没啥应用)
    但在某些情况下,用欧拉反演推式子确实会简单很多

    首先给出 \(\sum\limits_{d\mid n}\varphi(d)=n\) 的证明:
    首先有 \(\sum\limits_{d\mid n}\sum\limits_{i=1}^n[\gcd(i,n)=d]=n\)
    其中的方括号是艾佛森括号

    这个式子其实是将 \(1\sim n\) 的所有整数 \(i\)\(\gcd(i,n)\) 的值分类
    每个 \(i\) 都只会在 \(d=\gcd(i,n)\) 处产生恰好一次贡献,故左式的值为 \(n\)

    简单地推一推式子:
    \(\begin{aligned} \sum_{d\mid n}\sum_{i=1}^n[\gcd(i,n)=d]=n &\Rightarrow\\ \sum_{d\mid n}\sum_{i=1}^{n/d}[\gcd(i,n/d)=1]=n &\Rightarrow\\ \sum_{d\mid n}\varphi(n/d)=n&\Rightarrow\\ \sum_{d\mid n}\varphi(d)=n& \end{aligned}\)

    结论得证

    然后你只要会用这个结论就行了

    习题

    主要是应用于 \(\gcd\) 求和形式的式子,直接把 \(\gcd\) 换成 \(\sum\limits_{d\mid \gcd}\varphi(d)\) ,然后大力推一波即可
    [NOI2010] 能量采集(洛谷P1447)
    SP26017 GCDMAT - GCD OF MATRIX
    SP26045 GCDMAT2 - GCD OF MATRIX (hard)(毒瘤卡常题)
    AT5310 [ABC162E] Sum of gcd of Tuples (Hard)
    LibreOJ #6491. 「XXOI 2018」简单的最大公约数 (需用杜教筛)

  • 相关阅读:
    Shiro SessionContext和SessionKey的设计概念
    Shiro DefaultWebSessionManager的设计概念
    Shiro SessionDAO的设计概念
    Shiro DefaultSessionManager的设计概念
    Shiro 关于校验Session过期、有效性的设计概念
    Shiro AbstractValidatingSessionManager设计概念
    Windows 查看端口及杀掉进程
    Shiro Session及SessionManager的设计概念
    jQuery操作DOM节点
    jQuery动画效果
  • 原文地址:https://www.cnblogs.com/REKonib/p/15578511.html
Copyright © 2020-2023  润新知