莫比乌斯反演总结

目录

莫比乌斯×狄利克雷

很早以前的总结了......

今天比较特别,发表纪念一下。

前情提要

需要掌握

  1. μ \mu μ 的定义及求法。
  2. 大型运算符交换顺序。

引入

定义

  1. ∀ n ∈ N ∗ \forall n\in N^* ∀n∈N∗ ,一定有 n = ∏ i = 1 q p i a i n=\prod\limits_{i=1}^qp_i^{a_i} n=i=1∏qpiai,
    对此定义 μ ( n ) = { 0 n 含平方因子 ( − 1 ) q o t h e r w i s e \mu(n)=\begin{cases}0&n 含平方因子\\(-1)^q&otherwise\end{cases} μ(n)={0(−1)qn含平方因子otherwise。
  2. 定义元函数 ϵ ( n ) = [ n = 1 ] = { 1 n = 1 0 n ≠ 1 \epsilon(n)=[n=1]=\begin{cases}1&n=1\\0&n\not=1\end{cases} ϵ(n)=[n=1]={10n=1n=1。
  3. I d k ( x ) = x k \mathrm{Id}_k(x)=x^k Idk(x)=xk。

公式

  1. ⌊ ⌊ i j ⌋ k ⌋ = ⌊ i j k ⌋ \left\lfloor{\left\lfloor{i\over j}\right\rfloor\over k}\right\rfloor=\left\lfloor{i\over jk}\right\rfloor ⌊k⌊ji⌋⌋=⌊jki⌋。

积性函数

若 gcd ⁡ ( x , y ) = 1 \gcd(x,y)=1 gcd(x,y)=1 时,有 f ( x y ) = f ( x ) f ( y ) f(xy)=f(x)f(y) f(xy)=f(x)f(y),则称 f f f 是一个积性函数,

若 f , g f,g f,g 为积性函数,则 h ( i ) = f ( i ) g ( i ) h(i)=f(i)g(i) h(i)=f(i)g(i) 也为积性函数(不同于狄利克雷卷积)。

积性函数的线性递推

若函数 f f f 为积性函数,那么一定可以按下面的方法转移。

设 P ( n ) P(n) P(n) 为 n n n 中最小质因子, A ( n ) A(n) A(n) 为 n n n 中最小质因子的次数,定义 P A ( n ) = P ( n ) A ( n ) \mathrm{PA}(n)=P(n)^{A(n)} PA(n)=P(n)A(n):

f ( n ) = { 1 n = 1 g ( n ) n ≠ 1 ∧ n = P A ( n ) f ( P A ( n ) ) f ( n P A ( n ) ) n ≠ 1 ∧ n ≠ P A ( n ) f(n)=\begin{cases}1&n=1\\g(n)&n\not=1 \land n=\mathrm{PA}(n)\\f(\mathrm{PA}(n))f({n\over \mathrm{PA}(n)})&n\not=1 \land n\not=\mathrm{PA}(n)\end{cases} f(n)=⎩ ⎨ ⎧1g(n)f(PA(n))f(PA(n)n)n=1n=1∧n=PA(n)n=1∧n=PA(n)

这时,我们只需要处理 g ( n ) g(n) g(n) 即可,

其余可以用线性筛(欧拉筛)来 O ( n ) O(n) O(n) 解决!

简介

莫比乌斯

莫比乌斯函数

μ ( x ) \mu(x) μ(x)

简洁的容斥系数,适用于:倍数容斥。

莫比乌斯反演

T ( f ) ( n ) = ∑ d ∣ n f ( d ) , R ( f ) ( n ) = ∑ d ∣ n μ ( n d ) f ( d ) T(f)(n)=\sum_{d|n} f(d),R(f)(n)=\sum_{d|n} \mu\left({n\over d}\right) f(d) T(f)(n)=d∣n∑f(d),R(f)(n)=d∣n∑μ(dn)f(d)

用于化简式子(不常直接用)。

莫比乌斯的性质

ϵ ( x ) = ∑ d ∣ x μ ( d ) \epsilon(x)=\sum_{d|x} \mu(d) ϵ(x)=d∣x∑μ(d)

用于化简式子(常用)。

证明:

设 n = ∏ i = 1 q p i a i n=\prod\limits_{i=1}^qp_i^{a_i} n=i=1∏qpiai ,而 μ ( d ) ≠ 0 \mu(d)\not=0 μ(d)=0 的 d d d 当且仅当他的质因子指数 ≤ 1 \leq 1 ≤1,

所以 n n n 的每个质因子都有两种取法,而 μ ( d ) \mu(d) μ(d) 就是 ( − 1 ) 指数取 1 的个数 (-1)^{指数取 1 的个数} (−1)指数取1的个数,

根据二项式定理,当 n > 1 n>1 n>1 时,奇数项的系数等于偶数项的系数,因此得证。

狄利克雷

狄利克雷卷积

h = f ∗ g ⇔ h ( x ) = ∑ d ∣ x f ( d ) g ( x d ) h=f*g\Leftrightarrow h(x)=\sum_{d|x} f(d)g\left({x\over d}\right) h=f∗g⇔h(x)=d∣x∑f(d)g(dx)

若 f , g f,g f,g 为积性函数,则 h h h 为积性函数。

狄利克雷卷积的性质

做以下定义:
I d k ( x ) = x k \mathrm{Id}_k(x)=x^k Idk(x)=xk

有性质:

  1. 交换律: f ∗ g = g ∗ f f*g=g*f f∗g=g∗f。
  2. 结合律: ( f ∗ g ) ∗ h = f ∗ ( g ∗ h ) (f*g)*h=f*(g*h) (f∗g)∗h=f∗(g∗h)。
  3. 分配率: f ∗ ( g + h ) = f ∗ g + f ∗ h f*(g+h)=f*g+f*h f∗(g+h)=f∗g+f∗h。
  4. 单位元: ϵ ∗ f = f \epsilon*f=f ϵ∗f=f。
  5. 逆元:若 f ∗ g = ϵ f*g=\epsilon f∗g=ϵ ,那么称 f f f 和 g g g 互为逆元,即 f = g − 1 , g = f − 1 f=g^{-1},g=f^{-1} f=g−1,g=f−1。
  6. 若 f f f 和 g g g 为积性函数,则 f ∗ g f*g f∗g 也为积性函数, f − 1 f^{-1} f−1 也是积性函数。
  7. 若 f ∗ g = h f*g=h f∗g=h,则 I d k f ∗ I d k g = I d k h \mathrm{Id}_kf*\mathrm{Id}_kg=\mathrm{Id}_kh Idkf∗Idkg=Idkh。
    证明如下:
    I d k f ∗ I d k g ( n ) = ∑ d ∣ n f ( d ) g ( n d ) I d k ( d ) I d k ( n d ) = ∑ d ∣ n f ( d ) g ( n d ) I d k ( d n d ) = I d k ( n ) ∑ d ∣ n f ( d ) g ( n d ) = I d k ( n ) h ( n ) \begin{aligned}&\mathrm{Id}_kf*\mathrm{Id}kg(n)\\=&\sum\limits{d|n} f(d)g({n\over d})\mathrm{Id}_k(d)\mathrm{Id}k({n\over d})\\=&\sum\limits{d|n} f(d)g({n\over d})\mathrm{Id}_k(d{n\over d})\\=&\mathrm{Id}k(n)\sum\limits{d|n} f(d)g({n\over d})\\=&\mathrm{Id}_k(n)h(n)\end{aligned} ====Idkf∗Idkg(n)d∣n∑f(d)g(dn)Idk(d)Idk(dn)d∣n∑f(d)g(dn)Idk(ddn)Idk(n)d∣n∑f(d)g(dn)Idk(n)h(n)
  8. 特别地,当 h ( n ) = ∑ d ∣ n f ( d ) g ( d ) h(n)=\sum\limits_{d|n}f(d)g(d) h(n)=d∣n∑f(d)g(d) ,若 f f f 和 g g g 为积性函数, h h h 也为积性函数,证明如下:
    设 c ( d ) = f ( d ) g ( d ) c(d)=f(d)g(d) c(d)=f(d)g(d) ,因为 f f f 和 g g g 为积性函数,所以直积后仍为积性函数,
    而 h ( n ) = ∑ d ∣ n c ( d ) = c ∗ I d 0 h(n)=\sum\limits_{d|n}c(d)=c*\mathrm{Id}_0 h(n)=d∣n∑c(d)=c∗Id0,所以 h h h 也为积性函数。
莫比乌斯×狄利克雷

这里对于函数 f f f 定义:
T ( f ) = f ∗ I d 0 , R ( f ) = f ∗ μ T(f)=f*\mathrm{Id}_0,R(f)=f*\mu T(f)=f∗Id0,R(f)=f∗μ

满足:
T ( R ( f ) ) = R ( T ( f ) ) = f T(R(f))=R(T(f))=f T(R(f))=R(T(f))=f

常见形式与例子

看不懂的,配套下文的技巧观看。

模板 1 1 1:函数套 gcd ⁡ \gcd gcd

关于形如 ∑ i = 1 n ∑ j = 1 m f ( gcd ⁡ ( i , j ) ) \sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) ∑i=1n∑j=1mf(gcd(i,j)) 的模板解法:

∑ i = 1 n ∑ j = 1 m f ( gcd ⁡ ( i , j ) ) 原式 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ [ gcd ⁡ ( i , j ) = 1 ] 枚举 gcd ⁡ 的结果 d = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ ∑ k ∣ i ∧ k ∣ j μ ( k ) 莫比乌斯函数的性质 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } μ ( k ) ∑ i = 1 ⌊ n k d ⌋ ∑ j = 1 ⌊ m k d ⌋ 1 交换大型运算符位置 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } μ ( k ) ⌊ n k d ⌋ ⌊ m k d ⌋ 易得 = ∑ t = 1 min ⁡ { n , m } ∑ k ∣ t f ( t k ) μ ( k ) ⌊ n t ⌋ ⌊ m t ⌋ 换元令 t = k d = ∑ t = 1 min ⁡ { n , m } ⌊ n t ⌋ ⌊ m t ⌋ ∑ k ∣ t f ( t k ) μ ( k ) \begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) & 原式\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor}\left[\gcd\left(i,j\right)=1\right] & 枚举 \gcd 的结果 d\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} \sum_{k|i\land k|j} \mu\left(k\right) & 莫比乌斯函数的性质\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over kd}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over kd}\right\rfloor} 1 & 交换大型运算符位置\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \left\lfloor {n\over kd}\right\rfloor \left\lfloor {m\over kd}\right\rfloor & 易得\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor & 换元令 t=kd\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \left\lfloor {n\over t}\right\rfloor \left\lfloor {m\over t}\right\rfloor \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \end{aligned} ======i=1∑nj=1∑mf(gcd(i,j))d=1∑min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋[gcd(i,j)=1]d=1∑min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋k∣i∧k∣j∑μ(k)d=1∑min{n,m}f(d)k=1∑min{⌊dn⌋,⌊dm⌋}μ(k)i=1∑⌊kdn⌋j=1∑⌊kdm⌋1d=1∑min{n,m}f(d)k=1∑min{⌊dn⌋,⌊dm⌋}μ(k)⌊kdn⌋⌊kdm⌋t=1∑min{n,m}k∣t∑f(kt)μ(k)⌊tn⌋⌊tm⌋t=1∑min{n,m}⌊tn⌋⌊tm⌋k∣t∑f(kt)μ(k)原式枚举gcd的结果d莫比乌斯函数的性质交换大型运算符位置易得换元令t=kd

还没有结束,最后一步是尝试证明 g ( t ) = ∑ k ∣ t f ( t k ) μ ( k ) g(t)=\sum\limits_{k|t}f\left({t\over k}\right)\mu\left(k\right) g(t)=k∣t∑f(kt)μ(k) 是一个积性函数。

(这是狄利克雷卷积,可以只证明 f f f 的积性,得到 g g g 的积性)

无论是否证得 g g g 是否具有积性,

只要可以快速预处理 g g g 即可。

然后求 g g g 的前缀和 s ( t ) = ∑ i = 1 t g ( i ) s(t)=\sum\limits_{i=1}^{t} g(i) s(t)=i=1∑tg(i),

求答案使用整数分块。

例题:

对于 n , m ≤ 10 7 n,m \le 10^7 n,m≤107, T ≤ 10 4 T \le 10^4 T≤104。求有多少对正整数 ( x , y ) (x,y) (x,y) 满足 x ≤ n ∧ y ≤ m x \le n \wedge y \le m x≤n∧y≤m,使得 gcd ⁡ ( x , y ) \gcd(x,y) gcd(x,y) 是一个质数。

模板 2 2 2:函数乘函数乘函数套 gcd ⁡ \gcd gcd

关于形如 ∑ i = 1 n ∑ j = 1 m g ( i ) h ( j ) f ( gcd ⁡ ( i , j ) ) \sum_{i=1}^{n} \sum_{j=1}^{m} g(i)h(j)f\left(\gcd\left(i,j\right)\right) ∑i=1n∑j=1mg(i)h(j)f(gcd(i,j)) 的模板解法:

∑ i = 1 n ∑ j = 1 m g ( i ) h ( j ) f ( gcd ⁡ ( i , j ) ) 原式 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ g ( i ) ∑ j = 1 ⌊ m d ⌋ h ( j ) [ gcd ⁡ ( i , j ) = 1 ] 枚举 gcd ⁡ 的结果 d = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ g ( i ) ∑ j = 1 ⌊ m d ⌋ h ( j ) ∑ k ∣ i ∧ k ∣ j μ ( k ) 莫比乌斯函数的性质 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } μ ( k ) ∑ i = 1 ⌊ n k d ⌋ h ( i ) ∑ j = 1 ⌊ m k d ⌋ g ( j ) 交换大型运算符位置 = ∑ t = 1 min ⁡ { n , m } ∑ k ∣ t f ( t k ) μ ( k ) ∑ i = 1 ⌊ n t ⌋ h ( i ) ∑ j = 1 ⌊ m t ⌋ g ( j ) 换元令 t = k d = ∑ t = 1 min ⁡ { n , m } ∑ i = 1 ⌊ n t ⌋ h ( i ) ∑ j = 1 ⌊ m t ⌋ g ( j ) ∑ k ∣ t f ( t k ) μ ( k ) \begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} g(i)h(j)f\left(\gcd\left(i,j\right)\right) & 原式\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} g(i) \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} h(j) \left[\gcd\left(i,j\right)=1\right] & 枚举 \gcd 的结果 d\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor}g(i) \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor}h(j) \sum_{k|i\land k|j} \mu\left(k\right) & 莫比乌斯函数的性质\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{k=1}^{\min\left\{\left\lfloor {n\over d}\right\rfloor,\left\lfloor {m\over d}\right\rfloor\right\}}\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over kd}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over kd}\right\rfloor} g(j) & 交换大型运算符位置\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \sum_{i=1}^{\left\lfloor {n\over t}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over t}\right\rfloor} g(j) & 换元令 t=kd\\ =&\sum_{t=1}^{\min\left\{n,m\right\}} \sum_{i=1}^{\left\lfloor {n\over t}\right\rfloor} h(i) \sum_{j=1}^{\left\lfloor {m\over t}\right\rfloor} g(j) \sum_{k|t}f\left({t\over k}\right)\mu\left(k\right) \end{aligned} =====i=1∑nj=1∑mg(i)h(j)f(gcd(i,j))d=1∑min{n,m}f(d)i=1∑⌊dn⌋g(i)j=1∑⌊dm⌋h(j)[gcd(i,j)=1]d=1∑min{n,m}f(d)i=1∑⌊dn⌋g(i)j=1∑⌊dm⌋h(j)k∣i∧k∣j∑μ(k)d=1∑min{n,m}f(d)k=1∑min{⌊dn⌋,⌊dm⌋}μ(k)i=1∑⌊kdn⌋h(i)j=1∑⌊kdm⌋g(j)t=1∑min{n,m}k∣t∑f(kt)μ(k)i=1∑⌊tn⌋h(i)j=1∑⌊tm⌋g(j)t=1∑min{n,m}i=1∑⌊tn⌋h(i)j=1∑⌊tm⌋g(j)k∣t∑f(kt)μ(k)原式枚举gcd的结果d莫比乌斯函数的性质交换大型运算符位置换元令t=kd

后三个求和只有公共项 t t t,可以按 t t t 分别预处理。

例题:

对于 T ≤ 10 4 T \le 10^4 T≤104, n , m ≤ 10 7 n,m \le 10^7 n,m≤107,求:
∑ i = 1 n ∑ j = 1 m l c m ( i , j ) \sum_{i=1}^n{\sum_{j=1}^{m}\mathrm{lcm}(i,j)} i=1∑nj=1∑mlcm(i,j)

模板 3 3 3:多要求

终极模板:见招拆招 \color{purple}{终极模板:见招拆招} 终极模板:见招拆招

关于形如 ∑ ∀ i ∈ [ 1.. n ] , 1 ≤ b i ≤ a i f ( gcd ⁡ k ∈ [ 1.. n ] b k ) ∏ j = 1 n g j ( b j ) \sum\limits_{\forall i\in[1..n],1\le b_i \le a_i} f(\gcd\limits_{k\in[1..n]} b_k) \prod\limits_{j=1}^{n} g_j(b_j) ∀i∈[1..n],1≤bi≤ai∑f(k∈[1..n]gcdbk)j=1∏ngj(bj) 的模板解法,

这并不好直接表示出来,但是推法几乎一样。

所以,只给出结论:
∑ t = 1 min ⁡ l = 1 n a l ( ∑ k ∣ t f ( t k ) μ ( k ) ) ∏ p = 1 n ∑ i = 1 ⌊ a p t ⌋ g p ( i ) \begin{aligned} \sum_{t=1}^{\min\limits_{l=1}^{n}{a_l}}\left(\sum_{k|t}f\left({t\over k}\right)\mu\left(k\right)\right)\prod\limits_{p=1}^{n}\sum_{i=1}^{\left\lfloor {a_p\over t} \right\rfloor} g_p(i) \end{aligned} t=1∑l=1minnal k∣t∑f(kt)μ(k) p=1∏ni=1∑⌊tap⌋gp(i)

模板 4 4 4: gcd ⁡ \gcd gcd 乘积

关于形如 ∏ i = 1 n ∏ j = 1 m f ( gcd ⁡ ( i , j ) ) \prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}f(\gcd(i,j)) i=1∏nj=1∏mf(gcd(i,j)) 的暴力解(不使用 ln ⁡ \ln ln 与 exp ⁡ \exp exp)模板:
∏ i = 1 n ∏ j = 1 m f ( gcd ⁡ ( i , j ) ) = ∏ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ [ gcd ⁡ ( i , j ) = 1 ] = ∏ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ ∑ k ∣ i ∧ k ∣ j μ ( k ) = ∏ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ ⌊ m d ⌋ } μ ( k ) ⌊ n k d ⌋ ⌊ m k d ⌋ = ∏ t = 1 min ⁡ { n , m } ∏ d ∣ t f ( d ) μ ( t d ) ⌊ n t ⌋ ⌊ m t ⌋ = ∏ t = 1 min ⁡ { n , m } ( ∏ d ∣ t f ( d ) μ ( t d ) ) ⌊ n t ⌋ ⌊ m t ⌋ \begin{aligned} &\prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}f(\gcd(i,j))\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{i=1}^{\left\lfloor{n\over d}\right\rfloor} \sum\limits_{j=1}^{\left\lfloor{m\over d}\right\rfloor} [\gcd(i,j)=1] }\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{i=1}^{\left\lfloor{n\over d}\right\rfloor} \sum\limits_{j=1}^{\left\lfloor{m\over d}\right\rfloor} \sum\limits_{k|i\land k|j} \mu(k) }\\ =&\prod_{d=1}^{\min\{n,m\}} f(d)^{ \sum\limits_{k=1}^{\min\left\{ \left\lfloor{n\over d}\right\rfloor \left\lfloor{m\over d}\right\rfloor \right\}} \mu(k) \left\lfloor{n\over kd}\right\rfloor \left\lfloor{m\over kd}\right\rfloor }\\ =& \prod_{t=1}^{\min\{n,m\}} \prod_{d|t} f(d)^{ \mu({t\over d}) \left\lfloor{n\over t}\right\rfloor \left\lfloor{m\over t}\right\rfloor }\\ =& \prod_{t=1}^{\min\{n,m\}} \left(\prod_{d|t} f(d)^{ \mu({t\over d}) }\right) ^{ \left\lfloor{n\over t}\right\rfloor \left\lfloor{m\over t}\right\rfloor } \end{aligned} =====i=1∏nj=1∏mf(gcd(i,j))d=1∏min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋[gcd(i,j)=1]d=1∏min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋k∣i∧k∣j∑μ(k)d=1∏min{n,m}f(d)k=1∑min{⌊dn⌋⌊dm⌋}μ(k)⌊kdn⌋⌊kdm⌋t=1∏min{n,m}d∣t∏f(d)μ(dt)⌊tn⌋⌊tm⌋t=1∏min{n,m} d∣t∏f(d)μ(dt) ⌊tn⌋⌊tm⌋

求解技巧

技巧 1 1 1:枚举答案

以模板 1 1 1 为例:
∑ i = 1 n ∑ j = 1 m f ( gcd ⁡ ( i , j ) ) = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 n ∑ j = 1 m [ gcd ⁡ ( i , j ) = d ] \begin{aligned} &\sum_{i=1}^{n} \sum_{j=1}^{m} f\left(\gcd\left(i,j\right)\right) \\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{n} \sum_{j=1}^{m}\left[\gcd\left(i,j\right)=d\right]\\ \end{aligned} =i=1∑nj=1∑mf(gcd(i,j))d=1∑min{n,m}f(d)i=1∑nj=1∑m[gcd(i,j)=d]

枚举 gcd ⁡ \gcd gcd 的结果 d d d,然后调整要求。

技巧 2 2 2:构造元函数

以模板 1 1 1 为例:
∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 n ∑ j = 1 m [ gcd ⁡ ( i , j ) = d ] = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i ′ = 1 ⌊ n d ⌋ ∑ j ′ = 1 ⌊ m d ⌋ [ gcd ⁡ ( i ′ , j ′ ) = 1 ] = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ ∑ k ∣ i ∧ k ∣ j μ ( k ) \begin{aligned} &\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{n} \sum_{j=1}^{m}\left[\gcd\left(i,j\right)=d\right]\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i'=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j'=1}^{\left\lfloor {m\over d}\right\rfloor}\left[\gcd\left(i',j'\right)=1\right]\\ =&\sum_{d=1}^{\min\left\{n,m\right\}}f(d) \sum_{i=1}^{\left\lfloor {n\over d}\right\rfloor} \sum_{j=1}^{\left\lfloor {m\over d}\right\rfloor} \sum_{k|i\land k|j} \mu\left(k\right) \end{aligned} ==d=1∑min{n,m}f(d)i=1∑nj=1∑m[gcd(i,j)=d]d=1∑min{n,m}f(d)i′=1∑⌊dn⌋j′=1∑⌊dm⌋[gcd(i′,j′)=1]d=1∑min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋k∣i∧k∣j∑μ(k)

考虑到,若 gcd ⁡ ( i , j ) = d \gcd(i,j)=d gcd(i,j)=d,那么 i , j i,j i,j 都是 d d d 的倍数,且 gcd ⁡ ( i d , j d ) = d d = 1 \gcd\left({i \over d},{j\over d}\right)={d\over d}=1 gcd(di,dj)=dd=1,

因此,直接枚举 d d d 的倍数。

换元 i ′ = i d , j ′ = j d i'={i\over d},j'={j\over d} i′=di,j′=dj,

因此, i ′ i' i′ 的上限就变为了 ⌊ n d ⌋ \left\lfloor {n\over d}\right\rfloor ⌊dn⌋, gcd ⁡ ( i ′ , j ′ ) = 1 \gcd(i',j')=1 gcd(i′,j′)=1。

gcd ⁡ ( i ′ , j ′ ) = 1 \] \\left\[\\gcd\\left(i',j'\\right)=1\\right\] \[gcd(i′,j′)=1\] 可以直接使用莫比乌斯函数的性质。 以约数个数和为例, 设 d ( x ) d(x) d(x) 表示 x x x 的约数个数: ∑ i = 1 n ∑ j = 1 m d ( i j ) = ∑ i = 1 n ∑ j = 1 m ∑ u ∣ i ∑ v ∣ j \[ gcd ⁡ ( u , v ) = 1 \] = ∑ u = 1 n ∑ v = 1 m \[ gcd ⁡ ( u , v ) = 1 \] ∑ u ∣ i ∑ v ∣ j 1 = ∑ u = 1 n ∑ v = 1 m \[ gcd ⁡ ( u , v ) = 1 \] ⌊ n u ⌋ ⌊ m v ⌋ = ∑ u = 1 n ∑ v = 1 m ⌊ n u ⌋ ⌊ m v ⌋ ∑ d ∣ i ∧ d ∣ j μ ( d ) \\begin{aligned} \&\\sum_{i=1}\^n{\\sum_{j=1}\^{m}d(ij)}\\\\ =\&\\sum_{i=1}\^n{\\sum_{j=1}\^{m}\\sum_{u\|i}{\\sum_{v\|j}{\[\\gcd(u,v)=1\]}}}\\\\ =\&\\sum_{u=1}\^n\\sum_{v=1}\^{m}\[\\gcd(u,v)=1\]\\sum_{u\|i}\\sum_{v\|j}1\\\\ =\&\\sum_{u=1}\^n\\sum_{v=1}\^{m}\[\\gcd(u,v)=1\]\\left\\lfloor{n\\over u}\\right\\rfloor\\left\\lfloor{m\\over v}\\right\\rfloor\\\\ =\&\\sum_{u=1}\^n\\sum_{v=1}\^{m}\\left\\lfloor{n\\over u}\\right\\rfloor\\left\\lfloor{m\\over v}\\right\\rfloor\\sum_{d\|i\\land d\|j}{\\mu(d)}\\\\ \\end{aligned} ====i=1∑nj=1∑md(ij)i=1∑nj=1∑mu∣i∑v∣j∑\[gcd(u,v)=1\]u=1∑nv=1∑m\[gcd(u,v)=1\]u∣i∑v∣j∑1u=1∑nv=1∑m\[gcd(u,v)=1\]⌊un⌋⌊vm⌋u=1∑nv=1∑m⌊un⌋⌊vm⌋d∣i∧d∣j∑μ(d) 这里对 d ( i j ) = ∑ u ∣ i ∑ v ∣ j \[ gcd ⁡ ( u , v ) = 1 \] d(ij)=\\sum\\limits_{u\|i}{\\sum\\limits_{v\|j}{\[\\gcd(u,v)=1\]}} d(ij)=u∣i∑v∣j∑\[gcd(u,v)=1\] 不展开证明,感兴趣的可以自证。 #### 技巧 3 3 3:交换大型运算符+换元 以模板 1 1 1 为例: ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ ∑ k ∣ i ∧ k ∣ j μ ( k ) = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } μ ( k ) ∑ i = 1 ⌊ n k d ⌋ ∑ j = 1 ⌊ m k d ⌋ 1 = ∑ d = 1 min ⁡ { n , m } f ( d ) ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } μ ( k ) ⌊ n k d ⌋ ⌊ m k d ⌋ = ∑ d = 1 min ⁡ { n , m } ∑ k = 1 min ⁡ { ⌊ n d ⌋ , ⌊ m d ⌋ } f ( d ) μ ( k ) ⌊ n k d ⌋ ⌊ m k d ⌋ = ∑ t = 1 min ⁡ { n , m } ∑ k ∣ t f ( t k ) μ ( k ) ⌊ n t ⌋ ⌊ m t ⌋ = ∑ t = 1 min ⁡ { n , m } ⌊ n t ⌋ ⌊ m t ⌋ ∑ k ∣ t f ( t k ) μ ( k ) \\begin{aligned} \&\\sum_{d=1}\^{\\min\\left\\{n,m\\right\\}}f(d) \\sum_{i=1}\^{\\left\\lfloor {n\\over d}\\right\\rfloor} \\sum_{j=1}\^{\\left\\lfloor {m\\over d}\\right\\rfloor} \\sum_{k\|i\\land k\|j} \\mu\\left(k\\right)\\\\ =\&\\sum_{d=1}\^{\\min\\left\\{n,m\\right\\}}f(d) \\sum_{k=1}\^{\\min\\left\\{\\left\\lfloor {n\\over d}\\right\\rfloor,\\left\\lfloor {m\\over d}\\right\\rfloor\\right\\}}\\mu\\left(k\\right) \\sum_{i=1}\^{\\left\\lfloor {n\\over kd}\\right\\rfloor} \\sum_{j=1}\^{\\left\\lfloor {m\\over kd}\\right\\rfloor} 1\\\\ =\&\\sum_{d=1}\^{\\min\\left\\{n,m\\right\\}}f(d) \\sum_{k=1}\^{\\min\\left\\{\\left\\lfloor {n\\over d}\\right\\rfloor,\\left\\lfloor {m\\over d}\\right\\rfloor\\right\\}}\\mu\\left(k\\right) \\left\\lfloor {n\\over kd}\\right\\rfloor \\left\\lfloor {m\\over kd}\\right\\rfloor\\\\ =\&\\sum_{d=1}\^{\\min\\left\\{n,m\\right\\}} \\sum_{k=1}\^{\\min\\left\\{\\left\\lfloor {n\\over d}\\right\\rfloor,\\left\\lfloor {m\\over d}\\right\\rfloor\\right\\}}f(d)\\mu\\left(k\\right) \\left\\lfloor {n\\over kd}\\right\\rfloor \\left\\lfloor {m\\over kd}\\right\\rfloor\\\\ =\&\\sum_{t=1}\^{\\min\\left\\{n,m\\right\\}} \\sum_{k\|t}f\\left({t\\over k}\\right)\\mu\\left(k\\right) \\left\\lfloor {n\\over t}\\right\\rfloor \\left\\lfloor {m\\over t}\\right\\rfloor\\\\ =\&\\sum_{t=1}\^{\\min\\left\\{n,m\\right\\}} \\left\\lfloor {n\\over t}\\right\\rfloor \\left\\lfloor {m\\over t}\\right\\rfloor \\sum_{k\|t}f\\left({t\\over k}\\right)\\mu\\left(k\\right) \\end{aligned} =====d=1∑min{n,m}f(d)i=1∑⌊dn⌋j=1∑⌊dm⌋k∣i∧k∣j∑μ(k)d=1∑min{n,m}f(d)k=1∑min{⌊dn⌋,⌊dm⌋}μ(k)i=1∑⌊kdn⌋j=1∑⌊kdm⌋1d=1∑min{n,m}f(d)k=1∑min{⌊dn⌋,⌊dm⌋}μ(k)⌊kdn⌋⌊kdm⌋d=1∑min{n,m}k=1∑min{⌊dn⌋,⌊dm⌋}f(d)μ(k)⌊kdn⌋⌊kdm⌋t=1∑min{n,m}k∣t∑f(kt)μ(k)⌊tn⌋⌊tm⌋t=1∑min{n,m}⌊tn⌋⌊tm⌋k∣t∑f(kt)μ(k) 将含 μ \\mu μ 的式子换到第二个,再令 t = k d t=kd t=kd,得到最终式子。 以约数个数和为例: ∑ u = 1 n ∑ v = 1 m ⌊ n u ⌋ ⌊ m v ⌋ ∑ d ∣ i ∧ d ∣ j μ ( d ) = ∑ d = 1 min ⁡ { n , m } μ ( d ) ∑ d ∣ i ∧ i ≤ n ⌊ n i ⌋ ∑ d ∣ j ∧ j ≤ m ⌊ m j ⌋ = ∑ d = 1 min ⁡ { n , m } μ ( d ) ∑ i = 1 ⌊ n d ⌋ ⌊ n i d ⌋ ∑ j = 1 ⌊ m d ⌋ ⌊ m j d ⌋ \\begin{aligned} \&\\sum_{u=1}\^n\\sum_{v=1}\^{m}\\left\\lfloor{n\\over u}\\right\\rfloor\\left\\lfloor{m\\over v}\\right\\rfloor\\sum_{d\|i\\land d\|j}{\\mu(d)}\\\\ =\&\\sum_{d=1}\^{\\min\\{n,m\\}}{\\mu(d)\\sum_{d\|i\\land i\\le n}{\\left\\lfloor {n\\over i}\\right\\rfloor}\\sum_{d\|j\\land j\\le m}{\\left\\lfloor {m\\over j}\\right\\rfloor}}\\\\ =\&\\sum_{d=1}\^{\\min\\{n,m\\}}{\\mu(d) \\sum_{i=1}\^{\\left\\lfloor{n\\over d}\\right\\rfloor}{\\left\\lfloor {n\\over id}\\right\\rfloor} \\sum_{j=1}\^{\\left\\lfloor{m\\over d}\\right\\rfloor}{\\left\\lfloor {m\\over jd}\\right\\rfloor} }\\\\ \\end{aligned} ==u=1∑nv=1∑m⌊un⌋⌊vm⌋d∣i∧d∣j∑μ(d)d=1∑min{n,m}μ(d)d∣i∧i≤n∑⌊in⌋d∣j∧j≤m∑⌊jm⌋d=1∑min{n,m}μ(d)i=1∑⌊dn⌋⌊idn⌋j=1∑⌊dm⌋⌊jdm⌋ #### 技巧 4 4 4:快速预处理 运用狄利克雷卷积,推出积性: f ( x ) = ∑ d ∣ x x d μ ( d ) f(x)=\\sum\\limits_{d\|x} {x\\over d}\\mu(d) f(x)=d∣x∑dxμ(d) 可以看作: f = I d 1 ∗ μ f=\\mathrm{Id}_1 \* \\mu f=Id1∗μ, 由于 I d 1 , μ \\mathrm{Id}_1,\\mu Id1,μ 都是积函数, 所以 f f f 是积函数。 直接推出积性: f ( x ) = ∑ d ∣ x d μ ( d ) f(x)=\\sum\\limits_{d\|x} d\\mu(d) f(x)=d∣x∑dμ(d) 定义 g ( x ) = x μ ( x ) g(x)=x\\mu(x) g(x)=xμ(x), 设 a , b a,b a,b 满足 gcd ⁡ ( a , b ) = 1 \\gcd(a,b)=1 gcd(a,b)=1, g ( a b ) = a b μ ( a b ) = a μ ( a ) b μ ( b ) = g ( a ) g ( b ) g(ab)=ab\\mu(ab)=a\\mu(a)b\\mu(b)=g(a)g(b) g(ab)=abμ(ab)=aμ(a)bμ(b)=g(a)g(b), 因此 g g g 为积函数, 又因为 f = I d 0 ∗ g f=\\mathrm{Id_0} \* g f=Id0∗g,所以 f f f 也是积函数。 当然,不乏有棘手的式子难以转移, 这类转移有时是题的难点, 不妨打表得到结论反推证明。 #### 技巧 5 5 5:换眼光看式子 以约数个数和为例: ∑ d = 1 min ⁡ { n , m } μ ( d ) ∑ i = 1 ⌊ n d ⌋ ⌊ n i d ⌋ ∑ j = 1 ⌊ m d ⌋ ⌊ m j d ⌋ = ∑ d = 1 min ⁡ { n , m } μ ( d ) ∑ i = 1 ⌊ n d ⌋ ⌊ ⌊ n d ⌋ i ⌋ ∑ j = 1 ⌊ m d ⌋ ⌊ ⌊ m d ⌋ j ⌋ \\begin{aligned} \&\\sum_{d=1}\^{\\min\\{n,m\\}}{\\mu(d) \\sum_{i=1}\^{\\left\\lfloor{n\\over d}\\right\\rfloor}{\\left\\lfloor {n\\over id}\\right\\rfloor} \\sum_{j=1}\^{\\left\\lfloor{m\\over d}\\right\\rfloor}{\\left\\lfloor {m\\over jd}\\right\\rfloor} }\\\\ =\&\\sum_{d=1}\^{\\min\\{n,m\\}}{\\mu(d) \\sum_{i=1}\^{\\left\\lfloor{n\\over d}\\right\\rfloor}{\\left\\lfloor {\\left\\lfloor{n\\over d}\\right\\rfloor\\over i}\\right\\rfloor} \\sum_{j=1}\^{\\left\\lfloor{m\\over d}\\right\\rfloor}{\\left\\lfloor {\\left\\lfloor{m\\over d}\\right\\rfloor\\over j}\\right\\rfloor} } \\end{aligned} =d=1∑min{n,m}μ(d)i=1∑⌊dn⌋⌊idn⌋j=1∑⌊dm⌋⌊jdm⌋d=1∑min{n,m}μ(d)i=1∑⌊dn⌋⌊i⌊dn⌋⌋j=1∑⌊dm⌋⌊j⌊dm⌋⌋ 这种形式便于预处理: f ( x ) = ∑ i = 1 x ⌊ x i ⌋ f(x)=\\sum\\limits_{i=1}\^{x} {\\left\\lfloor{x\\over i}\\right\\rfloor} f(x)=i=1∑x⌊ix⌋。 #### 技巧 6 6 6:无关项分别求解 在乘法的莫比乌斯反演中很可能出现, 以幽灵乐团为例: ∏ i = 1 A ∏ j = 1 B ∏ k = 1 C ( l c m ( i , j ) gcd ⁡ ( i , k ) ) α \\prod_{i=1}\^{A}{\\prod_{j=1}\^{B}{\\prod_{k=1}\^{C}{\\left(\\frac{\\mathrm{lcm}(i,j)}{\\gcd(i,k)}\\right)\^\\alpha}}} i=1∏Aj=1∏Bk=1∏C(gcd(i,k)lcm(i,j))α 观察上式,可以将其拆为: ( ∏ i = 1 A ∏ j = 1 B ∏ k = 1 C i α ) ( ∏ i = 1 A ∏ j = 1 B ∏ k = 1 C j α ) ( ∏ i = 1 A ∏ j = 1 B ∏ k = 1 C gcd ⁡ ( i , j ) α ) ( ∏ i = 1 A ∏ j = 1 B ∏ k = 1 C gcd ⁡ ( i , k ) α ) { \\left( \\prod\\limits_{i=1}\^{A} \\prod\\limits_{j=1}\^{B} \\prod\\limits_{k=1}\^{C} i\^\\alpha \\right)\\left( \\prod\\limits_{i=1}\^{A} \\prod\\limits_{j=1}\^{B} \\prod\\limits_{k=1}\^{C} j\^\\alpha \\right) \\over \\left( \\prod\\limits_{i=1}\^{A} \\prod\\limits_{j=1}\^{B} \\prod\\limits_{k=1}\^{C} \\gcd(i,j)\^\\alpha \\right) \\left( \\prod\\limits_{i=1}\^{A} \\prod\\limits_{j=1}\^{B} \\prod\\limits_{k=1}\^{C} \\gcd(i,k)\^\\alpha \\right) } (i=1∏Aj=1∏Bk=1∏Cgcd(i,j)α)(i=1∏Aj=1∏Bk=1∏Cgcd(i,k)α)(i=1∏Aj=1∏Bk=1∏Ciα)(i=1∏Aj=1∏Bk=1∏Cjα) #### 技巧 7 7 7:对数反演 (名字是乱起的) 定义 ln ⁡ ( f ) ( x ) = l n ( f ( x ) ) , exp ⁡ ( f ) ( x ) = exp ⁡ ( f ( x ) ) \\ln(f)(x)=ln(f(x)),\\exp(f)(x)=\\exp(f(x)) ln(f)(x)=ln(f(x)),exp(f)(x)=exp(f(x)), 那么 f = exp ⁡ ( ln ⁡ ( f ) ) f=\\exp(\\ln(f)) f=exp(ln(f)), ln ⁡ \\ln ln 可以让运算降级,方便计算。 #### 技巧 8 8 8:积分估值 有时会出现双重整数分块: ∑ i = 1 n ⌊ n i ⌋ ∑ j = 1 ⌊ n i ⌋ ⌊ n j ⌋ j \\sum\\limits_{i=1}\^{n}\\left\\lfloor{n\\over i}\\right\\rfloor\\sum\\limits_{j=1}\^{\\left\\lfloor{n\\over i}\\right\\rfloor} \\left\\lfloor{n\\over j}\\right\\rfloor j i=1∑n⌊in⌋j=1∑⌊in⌋⌊jn⌋j 这一式子计算的复杂度为 Θ ( n 3 4 ) \\Theta(n\^{3 \\over 4}) Θ(n43),可以使用积分估值计算复杂度。

相关推荐
木非哲3 分钟前
机器学习--从“三个臭皮匠”到 XGBoost:揭秘 Boosting 算法的“填坑”艺术
算法·机器学习·boosting
MSTcheng.4 分钟前
CANN ops-math算子的跨平台适配与硬件抽象层设计
c++·mfc
code monkey.4 分钟前
【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
linux·c++·ipc
薛定谔的猫喵喵7 分钟前
基于C++ Qt的唐代诗歌查询系统设计与实现
c++·qt·sqlite
小辉同志10 分钟前
437. 路径总和 III
算法·深度优先·广度优先
阿昭L11 分钟前
C++异常处理机制反汇编(三):32位下的异常结构分析
c++·windows·逆向工程
Cinema KI14 分钟前
C++11(下) 入门三部曲终章(基础篇):夯实语法,解锁基础编程能力
开发语言·c++
笨笨阿库娅15 分钟前
从零开始的算法基础学习
学习·算法
燃于AC之乐18 分钟前
深入解剖STL List:从源码剖析到相关接口实现
c++·stl·list·源码剖析·底层实现
汉克老师22 分钟前
GESP2025年6月认证C++二级( 第一部分选择题(9-15))
c++·循环结构·求余·gesp二级·gesp2级·整除、