莫比乌斯反演入门学习总结

前置技能点:

整除分块:

  现在我们想求:
∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^n {\lfloor\frac{n}{i}\rfloor} i=1nin

不妨先考虑 ⌊ n i ⌋ \lfloor \frac n i\rfloor in的结果.
{ i ≤ n , i 只 有 n 种 可 能 , 所 以 ⌊ n i ⌋ 也 只 有 n 种 可 能 i > n , 虽 然 i 有 n − n 种 可 能 , 但 是 ⌊ n i ⌋ ≤ n 所 以 ⌊ n i ⌋ 也 只 有 n 中 可 能 \begin{cases} i \leq \sqrt{n},i只有\sqrt{n}种可能,所以\lfloor \frac n i \rfloor 也只有 \sqrt n 种可能 \\i \gt \sqrt n ,虽然i有 n-\sqrt n种可能,但是\lfloor \frac n i \rfloor \le \sqrt n 所以\lfloor \frac n i \rfloor也只有\sqrt n 中可能 \end{cases} {in ,in ,inn i>n ,inn ,inn inn

既然如此,我们不妨根据 ⌊ n i ⌋ \lfloor \frac n i \rfloor in 分块,然后每一块统一计算大小,这样我们在 O ( n ) O\left ( \sqrt n \right ) O(n ) 的复杂度下求解了.

积性函数:

积 性 函 数 f ( x ) 满 足 : 任 何 x , y , 如 果 g c d ( x , y ) = 1 , 则 f ( x y ) = f ( x ) f ( y ) 积性函数f(x)满足: 任何x,y,如果 gcd(x,y) =1,则 f( xy) = f(x)f(y) f(x):x,ygcd(x,y)=1,f(xy)=f(x)f(y)

性质:

如 果 f ( x ) , g ( x ) 为 积 性 函 数 , p 为 常 数 , 则 : 如果f(x),g(x)为积性函数,p为常数,则: f(x),g(x),p,:
h ( x ) = f p ( x ) h ( x ) = f ( x p ) h ( x ) = f ( x ) g ( x ) h ( x ) = ∑ d ∣ x f ( d ) g ( x d ) \begin{aligned} h(x) &= f^p(x)\\ h(x) &= f(x^p)\\ h(x) &= f(x)g(x)\\ h(x) &= \sum_{d|x} f(d)g(\frac x d) \end{aligned} h(x)h(x)h(x)h(x)=fp(x)=f(xp)=f(x)g(x)=dxf(d)g(dx)
h ( x ) 均 为 积 性 函 数 h(x)均为积性函数 h(x)

常见的几个积性函数:

单 数 函 数 : ϵ ( n ) = [ n = = 1 ] ; 恒 等 函 数 : i d ( n ) = n ; 常 数 函 数 : 1 ( n ) = 1 ; 除 数 函 数 : σ k ( n ) = ∑ d ∣ n d k ; 如 果 k = 0 , 可 简 写 为 d ( n ) 欧 拉 函 数 : ϕ ( n ) = ∑ i = 1 n [ g c d ( i , j ) = = 1 ] ; 莫 比 乌 斯 函 数 : u ( n ) = { 1 n = 1 ( − 1 ) k k 为 n 的 不 同 素 因 子 个 数 , 且 每 个 素 因 子 只 拥 有 一 个 0 o t h e r w i s e \begin{aligned} 单数函数: \epsilon (n) &= [n==1];\\ 恒等函数: id(n) &= n;\\ 常数函数 :1(n) &= 1;\\ 除数函数: \sigma_{k}(n) &= \sum_{d|n} d^k;如果k=0,可简写为d(n)\\ 欧拉函数: \phi(n) &= \sum_{i=1}^n [gcd(i,j)==1];\\ 莫比乌斯函数:u(n) &= \begin{cases} 1 & n=1\\ (-1)^k & k为n的不同素因子个数,且每个素因子只拥有一个\\ 0 & otherwise\\ \end{cases} \end{aligned} :ϵ(n):id(n):1(n):σk(n):ϕ(n):u(n)=[n==1];=n;=1;=dndk;k=0,d(n)=i=1n[gcd(i,j)==1];=1(1)k0n=1kn,otherwise

Dirichlet卷积:

对 于 数 论 函 数 f ( x ) , g ( x ) : 对于数论函数f(x),g(x): f(x),g(x):
( f ∗ g ) n = ∑ d ∣ n f ( d ) g ( ⌊ n d ⌋ ) (f*g)_{n} = \sum_{d|n} f(d)g(\lfloor \frac n d \rfloor) (fg)n=dnf(d)g(dn)

卷 积 满 足 交 换 律 , 结 合 律 . 卷积满足交换律,结合律. ,.

举例:

ϵ = u ∗ 1 d = 1 ∗ 1 σ = i d ∗ 1 ϕ = i d ∗ u \begin{aligned} \epsilon &=u * 1\\ d &= 1 * 1\\ \sigma &= id * 1\\ \phi &= id * u \end{aligned} ϵdσϕ=u1=11=id1=idu

莫比乌斯函数:

u ( n ) = { 1 n = 1 ( − 1 ) k k 为 n 的 不 同 素 因 子 个 数 , 且 每 个 素 因 子 只 拥 有 一 个 0 o t h e r w i s e u(n) = \begin{cases} 1 & n=1\\ (-1)^k & k为n的不同素因子个数,且每个素因子只拥有一个\\ 0 & otherwise\\ \end{cases} u(n)=1(1)k0n=1kn,otherwise

性 质 : 莫 比 乌 斯 函 数 不 仅 是 积 性 函 数 , 且 满 足 ∑ d ∣ n u ( d ) = { 1 n = 1 0 n ≠ 1 \begin{aligned}性质: 莫比乌斯函数不&仅是积性函数,且满足\\ \sum_{d|n} u(d) &= \begin{cases} 1 & n=1\\ 0 & n \neq 1\\ \end{cases}\\ \end{aligned} :dnu(d),={10n=1n=1
这 个 函 数 在 反 演 中 会 很 常 见 , 经 常 性 的 需 要 求   前缀和   o r   O(1)查询 , 我 们 可 以 用 素 数 筛 O ( n ) 预 处 理 .   准 确 的 来 说 , 所 有 的 积 性 函 数 都 可 以 通 过 素 数 筛 O ( n ) 求 出 . 但 不 同 的 积 性 函 数 的 转 移 略 有 不 同 , 这个函数在反演中会很常见,经常性的需要求\ \textbf{前缀和} \ or \ \textbf{O(1)查询},我们可以用素数筛O(n)预处理.\\ ~\\ 准确的来说,所有的积性函数都可以通过素数筛O(n)求出.但不同的积性函数的转移略有不同, , 前缀和 or O(1)查询,O(n). ,O(n).,

void getMu() {
  mu[1] = 1;
  for (int i = 2; i <= n; ++i) {
    if (!flg[i]) p[++tot] = i, mu[i] = -1;
    for (int j = 1; j <= tot && i * p[j] <= n; ++j) {
      flg[i * p[j]] = 1;
      if (i % p[j] == 0) {
        mu[i * p[j]] = 0; // 不同的积性函数可以这里会有差异.
        break;
      }
      mu[i * p[j]] = -mu[i];
    }
  }
}

莫比乌斯反演:

若 f ( n ) = ∑ d ∣ n g ( d ) , 则 g ( n ) = ∑ d ∣ n u ( d ) f ( ⌊ n d ⌋ ) 若f(n) = \sum_{d|n} g(d), \\ 则g(n) = \sum_{d|n} u(d)f(\lfloor \frac n d \rfloor) f(n)=dng(d),g(n)=dnu(d)f(dn)

证明:
f = g ∗ 1 两 边 同 时 卷 积 : f ∗ u = g ∗ 1 ∗ u 利 用 结 合 律 : f ∗ u = g \begin{aligned}f &= g*1\\ 两边同时卷积:\qquad f*u &=g*1*u\\ 利用结合律: \qquad f*u &=g \end{aligned} f:fu:fu=g1=g1u=g

反演结论:

[ g c d ( i , j ) = 1 ]    ⟺    ∑ d ∣ g c d ( i , j ) u ( d )   通 过 上 面 u ( n ) 的 定 义 , 显 然 这 个 式 子 是 成 立 的 [gcd(i,j)=1] \iff \sum_{d|gcd(i,j)} u(d) \\ ~\\ 通过上面u(n)的定义,显然这个式子是成立的 [gcd(i,j)=1]dgcd(i,j)u(d) u(n),

例题讲解:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值