莫比乌斯函数 学习笔记

莫比乌斯函数 学习笔记


定义

\[\mu(n) = \begin{cases} 1 & n = 1 \\ 0 & p^2|n \\ (-1)^k & n=\prod_{i=1}^k p_k \\ \end{cases} \]

其中 \(p,p_i\) 代表质数。

性质

  • 它为积性函数。

  • \[\sum_{d|n} \mu(d) = [n=1] \\ \]

    \(\sum_{d|n} \mu(d) = \varepsilon(n),\mu * 1 = \varepsilon\),可用二项式定理证明。

    由此推得反演结论:

    \[[\gcd(i,j)=1] = \sum_{d|gcd(i,j)} \mu(d) \\ \]

线性筛

作为积性函数,它肯定可以欧拉筛啦。

Möbius 变换

\(f(n),g(n)\) 为两个数论函数。

  • \(f(n) = \sum_{d|n} g(d)\),则有 \(g(n) = \sum_{d|n}\mu(d)f(\frac{n}{d})\)
  • \(f(n)=\sum_{n|d} g(d)\),则有 \(g(n) = \sum_{n|d}\mu(\frac{n}{d})f(d)\)

可以用数论变换或者卷积来证明。

拓展

在卷积中,有:(\(\operatorname{id}\) 表示恒等函数)

\[\varphi \ast 1 = \operatorname{id} \\ \]


例题

Möbius 反演

SP7001 VLATTICE - Visible Lattice Points - 洛谷 (luogu.com.cn)

法 1:容斥

\((x,y,z)\)\(\max(x,y,z)\) 分组,也就是把正方体拆成多层。

那么 \((x,y,z)\) 会遮挡 \((kx,ky,kz)(k>1)\),那么用调和级数 DP 就可以求出每层没有被遮挡的点数:

每层最初是 \((x+1)^3-x^3\) 个点,即 \(3x^2+3x+1\),后来会被前面的调和级数逐渐减掉。

时间复杂度 \(O(n\log_2{n}+T)\)

这个做法可以简单地扩展到高维。

法 2:用 Möbius

好的我们开始推式子:

\[\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n [\gcd(i,j,k)=1] + 3\sum_{i=1}^n\sum_{j=1}^n [\gcd(i,j)=1] + 3 \\ \]

  • 那么我们把三次的单独拆出来看:

    \[\begin{aligned} & \sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n [\gcd(i,j,k)=1] \\ & = \sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\sum_{d|\gcd(i,j,k)} \mu(d) \\ & = \sum_{d=1}^n \mu(d) \sum_{i=1}^n[d|i]\sum_{j=1}^n[d|j]\sum_{k=1}^n[d|k] \\ & = \sum_{d=1}^n \mu(d) {\lfloor \frac{n}{d} \rfloor}^3 \end{aligned} \]

  • 两次的也是同理:

    \[\begin{aligned} & \sum_{i=1}^n\sum_{j=1}^n [\gcd(i,j)=1] \\ & = \sum_{d=1}^n \mu(d) {\lfloor \frac{n}{d} \rfloor}^2 \end{aligned} \]

欧拉筛 Möbius 函数然后数论分块解决即可,这个算法也可以扩展到高维。

P2522 [HAOI2011] Problem b - 洛谷 (luogu.com.cn)

题意

\(\sum_{x=a}^b\sum_{y=c}^d[\gcd(x,y)=k]\)

分析

转化为二维差分,然后分别求:

\[\begin{aligned} & \sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j)=k] \\ &= \sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor} [\gcd(i,j)=1] \\ &= \sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor} \sum_{d|\gcd(i,j)}\mu(d) \\ &= \sum_{d=1}^{\min(\lfloor\frac{n}{k}\rfloor,\lfloor\frac{m}{k}\rfloor)}\mu(d) \lfloor \frac{\lfloor\frac{n}{k}\rfloor}{d} \rfloor \lfloor \frac{\lfloor\frac{m}{k}\rfloor}{d} \rfloor \\ \end{aligned} \]

P2568 GCD - 洛谷 (luogu.com.cn)

\[\begin{aligned} & \sum_{p\in\operatorname{pr}}\sum_{i=1}^n\sum_{j=1}^n [\gcd(i,j)=p] \\ &= \sum_{p\in\operatorname{pr}} \sum_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{p}\rfloor} [\gcd(i,j)=1] \\ &= \sum_{p\in\operatorname{pr}} (\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor} 2\sum_{j=1}^{i} [\gcd(i,j)=1] -1) \\ &= \sum_{p\in\operatorname{pr}} (2\sum_{i=1}^{\lfloor\frac{n}{p}\rfloor} \varphi(i)-1) \\ \end{aligned} \]

SP5971 LCMSUM - LCM Sum - 洛谷 (luogu.com.cn)

引理:\(\gcd(i,n)=\gcd(n-i,n)\)

\[\begin{aligned} & \sum_{i=1}^n \operatorname{lcm}(i,n) \\ &= \sum_{i=1}^n \frac{i\cdot n}{\gcd(i,n)} \\ &= \frac{1}{2} ( \sum_{i=1}^{n-1} \frac{i\cdot n}{\gcd(i,n)} + \sum_{i=1}^{n-1} \frac{(n-i)\cdot n}{\gcd(n-i,n)} ) + n \\ &= \frac{1}{2} \sum_{i=1}^{n-1} \frac{n^2}{\gcd(i,n)} + n \\ &= \frac{1}{2} \sum_{i=1}^{n} \frac{n^2}{\gcd(i,n)} + \frac{n}{2} \\ &= \frac{n}{2} (\sum_{i=1}^{n} \frac{n}{\gcd(i,n)} + 1) \\ &= \frac{n}{2} (\sum_{d|n} \frac{n}{d}\varphi(\frac{n}{d}) + 1) \\ \end{aligned} \]

\(g(n)=\sum_{d|n} d\varphi(d)\) 是积性函数,线筛预处理即可,筛法推导:

对于 \(g(p^k)\),有:

\[\begin{aligned} & g(p^k) \\ & = \sum_{i=0}^k p^i \varphi(p^i) \\ & = \sum_{i=0}^k p^{2i-1} (p-1) \\ \end{aligned} \]

故有:

\[g(p^{k+1})=g(p^k)+ p^{2k+1} (p-1) \\ \]

现在看 \(g(i\cdot p),p|i\),设 \(i=a\cdot p^w,\gcd(a,p)=1\)

\[\begin{aligned} g(i\cdot p) &= g(a) \cdot g(p^{w+1}) \\ g(i) &= g(a) \cdot g(p^w) \\ \end{aligned} \]

可以得到:

\[\begin{aligned} g(i\cdot p) - g(i) &= g(a) p^{2w+1}(p-1) \\ g(i) - g(\frac{i}{d}) &= g(a) p^{2w-1}(p-1) \\ \end{aligned} \]

联立可得:

\[\begin{aligned} g(i\cdot p) &= g(i) + [g(i) - g(\frac{i}{d})] p^2 \\ \end{aligned} \]

P1829 [国家集训队] Crash的数字表格 / JZPTAB - 洛谷 (luogu.com.cn)

题意

求以下式子的值:

\[\sum_{i=1}^n \sum_{j=1}^m \operatorname{lcm}(i,j) \pmod {20101009} \]

分析

\[\begin{aligned} & \sum_{i=1}^n \sum_{j=1}^m \operatorname{lcm}(i,j) \\ &= \sum_{i=1}^n \sum_{j=1}^m \frac{i\cdot j}{\gcd(i,j)} \\ &= \sum_{d=1}^{\min(n,m)} d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} [\gcd(i,j)=1]i\cdot j \\ \end{aligned} \]

\(\operatorname{sum}(n,m) = \sum_{i=1}^{n} \sum_{j=1}^{m} [\gcd(i,j)=1]i\cdot j\)

\[\begin{aligned} &\operatorname{sum}(n,m) \\ &= \sum_{i=1}^{n} \sum_{j=1}^{m} \sum_{d|\gcd(i,j)} \mu(d) i\cdot j \\ &= \sum_{d=1}^{\min(n,m)} \mu(d) \sum_{i=1}^{n}[d|i] \sum_{j=1}^{m} [d|j] i\cdot j \\ &= \sum_{d=1}^{\min(n,m)} \mu(d) d^2 \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} i\cdot j \\ &= \sum_{d=1}^{\min(n,m)} \mu(d) d^2 \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} i \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} j \\ \end{aligned} \]

答案为:

\[\begin{aligned} ans = \sum_{d=1}^{\min(n,m)} d \operatorname{sum}(\lfloor \frac{n}{d} \rfloor,\lfloor \frac{m}{d} \rfloor) \end{aligned} \]

发现可以用数论分块求 \(\operatorname{sum}\)\(ans\),就变成了数论分块套数论分块。

P3327 [SDOI2015] 约数个数和 - 洛谷 (luogu.com.cn)

题意

\(d(x)\)\(x\) 的约数个数,求:

\[\begin{aligned} & \sum_{i=1}^n\sum_{j=1}^m d(i\cdot j) \\ \end{aligned} \]

分析

引理:\(d(i\cdot j) = \sum_{x|i}\sum_{y|j}[\gcd(x,y)=1]\)

\[\begin{aligned} & d(i\cdot j) \\ &= \sum_{x|i}\sum_{y|j}[\gcd(x,y)=1] \\ &= \sum_{x|i}\sum_{y|j}\sum_{p|\gcd(x,y)}\mu(p) \\ &= \sum_{p=1}^{\min(i,j)}\mu(p)\sum_{x|i}\sum_{y|j}[p|\gcd(x,y)] \\ &= \sum_{p|i,p|j} \mu(p) \sum_{x|\frac{i}{p}} \sum_{y|\frac{j}{p}} 1 \\ &= \sum_{p|i,p|j} \mu(p) d(\frac{i}{p}) d(\frac{j}{p}) \\ \end{aligned} \]

现在带回去:

\[\begin{aligned} & \sum_{i=1}^n\sum_{j=1}^m d(i\cdot j) \\ &= \sum_{i=1}^n\sum_{j=1}^m \sum_{p|i,p|j} \mu(p) d(\frac{i}{p}) d(\frac{j}{p}) \\ &= \sum_{p=1}^{\min(n,m)} \mu(p) \sum_{i=1}^{\lfloor \frac{n}{p} \rfloor} d(i) \sum_{j=1}^{\lfloor \frac{m}{p} \rfloor} d(j) \\ \end{aligned} \]

假设 \(n = \prod_{i=1}^w p_i^{\alpha_i}\),其中 \(p_i\) 是互不相同的质数。

\[\because n = \prod_{i=1}^w p_i^{\alpha_i} \\ \therefore d(n) = \prod_{i=1}^w (\alpha_i+1) \\ \]

\(\mu,d\) 都是积性函数,都可以欧拉筛解决。

Mophues - HDU 4746 - Virtual Judge (vjudge.net)

题意

\(\operatorname{cnt}(x)\) 表示 \(x\) 的素因子个数,给定 \(n,m,p\),求:

\[\sum_{i=1}^n \sum_{j=1}^m [\operatorname{cnt}(\gcd(i,j)) \le p] \\ \]

分析

\[\begin{aligned} & \sum_{i=1}^n \sum_{j=1}^m [\operatorname{cnt}(\gcd(i,j)) \le p] \\ &= \sum_{G=1}^{\min(n,m)} [\operatorname{cnt}(G) \le p] \sum_{i=1}^n \sum_{j=1}^m [\gcd(i,j)=g] \\ &= \sum_{G=1}^{\min(n,m)} [\operatorname{cnt}(G) \le p] \sum_{i=1}^{\lfloor \frac{n}{g} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{g} \rfloor} [\gcd(i,j)=1] \\ &= \sum_{G=1}^{\min(n,m)} [\operatorname{cnt}(G) \le p] \sum_{i=1}^{\lfloor \frac{n}{g} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{g} \rfloor} \sum_{d|\gcd(i,j)} \mu(d) \\ \end{aligned} \]

取出:

\[\begin{aligned} &\operatorname{sum}(n,m) \\ &= \sum_{i=1}^{n} \sum_{j=1}^{m} \sum_{d|\gcd(i,j)} \mu(d) \\ &= \sum_{d=1}^{\min(n,m)} \mu(d) \sum_{i=1}^{n} [d|i] \sum_{j=1}^{m} [d|j] \\ &= \sum_{d=1}^{\min(n,m)} \mu(d) {\lfloor \frac{n}{d} \rfloor} {\lfloor \frac{m}{d} \rfloor} \\ \end{aligned} \]

这部分可以数论分块。

带回原式:

\[\begin{aligned} &\sum_{G=1}^{\min(n,m)} [\operatorname{cnt}(G) \le p] \operatorname{sum}({\lfloor \frac{n}{G} \rfloor},{\lfloor \frac{m}{G} \rfloor}) \\ &= \sum_{G=1}^{\min(n,m)} [\operatorname{cnt}(G) \le p] \sum_{d=1}^{\min({\lfloor \frac{n}{G} \rfloor},{\lfloor \frac{m}{G} \rfloor})} \mu(d) {\lfloor \frac{n}{Gd} \rfloor} {\lfloor \frac{m}{Gd} \rfloor} \\ &= \sum_{G=1}^{\min(n,m)} \sum_{d=1}^{\min({\lfloor \frac{n}{G} \rfloor},{\lfloor \frac{m}{G} \rfloor})} [\operatorname{cnt}(G) \le p] \mu(d) {\lfloor \frac{n}{Gd} \rfloor} {\lfloor \frac{m}{Gd} \rfloor} \\ &= \sum_{c=1}^{\min(n,m)} {[\sum_{d|c} \mu(\frac{c}{d}) [\operatorname{cnt}(d)\le p]]} {\lfloor \frac{n}{c} \rfloor} {\lfloor \frac{m}{c} \rfloor} \\ \end{aligned} \]

\(c\mu(n) = \sum_{d|n} \mu(\frac{n}{d}) [\operatorname{cnt}(d)\le p]\),它可以 \(O(n\ln{n})\) 调和级数时间复杂度内求出。由于 \(p\) 真实有用的大小只有 \(\lfloor\log_2{n}\rfloor=18\),只要再做一个前缀和,对询问数论分块即可,时间复杂度 \(O(n\log_2{n} + Q\sqrt{n})\)

P1447 [NOI2010] 能量采集 - 洛谷 (luogu.com.cn)

题意

给定 \(n,m\),规定网格图上在 \((x,y)(x\in[1,n],y\in[1,m])\) 处有标记点,原点为 \((0,0)\)

如果一条直线上最多有 \(k\) 个标记点,那么该直线的贡献为 \(2k+1\),求所有经过原点的直线的贡献和。

分析
法 1:Mobius 反演 + 狄利克雷卷积

原题相当于求:

\[\sum_{i=1}^n\sum_{j=1}^m [2\gcd(i,j)+1] \\ \]

那么我们化简之后会发现它是一个十分经典的问题:

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m [2\gcd(i,j)-1] \\ &=2\sum_{i=1}^n\sum_{j=1}^m \gcd(i,j) - nm \\ &=2\sum_{d=1}^{\min(n,m)} d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} [\gcd(i,j)=1] - nm \\ &=2\sum_{d=1}^{\min(n,m)} d \sum_{i=1}^{\min({\lfloor \frac{n}{d} \rfloor}{\lfloor \frac{m}{d} \rfloor})}\mu(i) {\lfloor \frac{n}{id} \rfloor}{\lfloor \frac{m}{id} \rfloor} - nm \\ &=2\sum_{i=1}^{\min(n,m)} [\sum_{d|i} \frac{i}{d}\mu(d)] {\lfloor \frac{n}{i} \rfloor}{\lfloor \frac{m}{i} \rfloor} - nm \\ \end{aligned} \]

那么现在就有 \(90\%\) 的分数了。

然后看到 \(h(i) = \sum_{d|i} \frac{i}{d}\mu(d)\),这是一个狄利克雷卷积,我们尝试化简:

\[\begin{aligned} h &= \operatorname{id} \ast \mu \\ h \ast 1 &= \operatorname{id} \ast \mu \ast 1 \\ h \ast 1 &= \operatorname{id} \ast (\mu \ast 1) \\ h \ast 1 &= \operatorname{id} \ast \varepsilon \\ h \ast 1 &= \operatorname{id} \\ h &= \varphi \\ \end{aligned} \]

所以得到 \(h(i) = \varphi(i)\),即欧拉函数。

所以又可以得到原式为:

\[\begin{aligned} &2\sum_{i=1}^{\min(n,m)} \varphi(i) {\lfloor \frac{n}{i} \rfloor}{\lfloor \frac{m}{i} \rfloor} - nm \\ \end{aligned} \]

数论分块即可,复杂度 \(O(n)\)

法 2:结合容斥

考虑求出:

\[g(x)=\sum_{i=1}^n\sum_{i=1}^m[\gcd(i,j)=x] \]

设:

\[f(x)=\sum_{i=1}^n\sum_{i=1}^m[x|\gcd(i,j)] \]

很容易得到:

\[f(x) = {\lfloor \frac{n}{x} \rfloor}{\lfloor \frac{m}{x} \rfloor} \]

那么我们直接容斥,得到:

\[g(x) = f(x) - \sum_{x|i,i>x}^{i \cdot x \le \min(n,m)}g(i \cdot x) \]

调和级数复杂度 \(O(n\ln{n})\)

法 3:Mobius 变换

看到法 2 中:

\[\begin{cases} g(x) = \sum_{i=1}^n\sum_{i=1}^m[\gcd(i,j)=x] \\ f(x) = \sum_{i=1}^n\sum_{i=1}^m[x|\gcd(i,j)] \\ \end{cases} \]

可以得到 \(f(n) = \sum_{n|d} g(d)\),Mobius 变换一下即可得到 \(g(n) = \sum_{n|d} \mu(\frac{d}{n}) f(d)\)

调和级数复杂度 \(O(n\ln{n})\)

法 4:暴力

把法 1 中的 \(O(n\sqrt{n})\) 实现据说可以拿到满分。

BZOJ P3309 DZY Loves Math

比较简单的题目。

Möbius 变换

GCD of Sequence - HDU 4675 - Virtual Judge (vjudge.net)

题意

给定 \(n\) 个数的序列 \(a\),其中 \(\forall i\in [1,n],a_i \in [1,m]\)

求对于每个 \(d\in [1,m]\),有多少个序列 \(b\) 满足:

  • \(\forall i\in [1,n],b_i \in [1,m]\)
  • \(\gcd_{i=1}^n b_i = d\)
  • 有恰好 \(k\) 个位置满足 \(a_i \neq b_i\)

答案对 \(10^9+7\) 取模。

分析

首先,对于 \(d\),要求 \(\forall i\in[1,n],d|b_i\),那么我们就可以很简单地求出满足 \(d|\gcd_{i=1}^n b_i\)\(b\) 序列的数量。

\(f(d)\) 表示满足 \(d|\gcd_{i=1}^n b_i\)\(b\) 序列的数量,\(g(d)\) 表示满足 \(d=\gcd_{i=1}^n b_i\)\(b\) 序列的数量。

所以 \(f(n) = \sum_{n|d} g(d)\),进行 Mobius 变换,得到 \(g(n) = \sum_{n|d}\mu(\frac{n}{d})f(d)\)

现在我们求一下 \(f\)

\(cnt(d)\) 表示 \(a\) 序列中有几个是 \(d\) 的倍数,这可以调和级数求出。

\[f(d) = {cnt(d)\choose n-k} ({\lfloor \frac{m}{d} \rfloor}-1)^{cnt(d)-(n-k)} {\lfloor \frac{m}{d} \rfloor}^{n-cnt(d)} \]

当上式中有不合法成分,\(f(n)\)\(0\)

P1447 [NOI2010] 能量采集 - 洛谷 (luogu.com.cn)

前文有提到,在“Möbius 反演”部分。

结合基础算法

P4318 完全平方数 - 洛谷 (luogu.com.cn)

题意

\(T\) 个询问:求第 \(K\) 个无平方质因子的正整数。

分析
法 1:Mobius 函数+二分

直接求非常不可做,我们考虑二分:每次二分 \(mid\),要求出 \(\le mid\) 有多少个满足要求的数。

我们很容易就可以想到一种容斥:

先减去 \(2^2,3^2,5^2\) 等质数的平方,再加上 \(6^2,10^2,14^2\) 等数的平方……

一直进行下去,首先我们会发现这个数的大小肯定是小于等于 \(\sqrt{K}\) 的,那么我们可以把范围缩小下来。

然后观察上面的数列,发现它们在计算中的系数就是 Mobius 函数,从定义即可推知,那么直接就解决了。

复杂度 \(O(\sqrt{n}+T\sqrt{K}\log_2{K})\),注意预处理和二分范围。

法 2:杜教筛+二分

没学过。

法 3:分块打表

……

结合数据结构

P3312 [SDOI2014] 数表 - 洛谷 (luogu.com.cn)

题意

\(Q\) 个询问,给定 \(n,m,a\),求:

\[\sum_{i=1}^n \sum_{j=1}^m (\sum_{d|\gcd(i,j)} d)[\sum_{d|\gcd(i,j)} d\le a] \\ \]

分析

\(\sigma(x)\) 表示 \(x\) 的因子之和,它可以欧拉筛。

\(a\) 的限制去掉,可以得到:

\[\begin{aligned} & \sum_{i=1}^n \sum_{j=1}^m \sigma(\gcd(i,j)) \\ &= \sum_{d=1}^{\min(n,m)} \sigma(d) \sum_{i=1}^n \sum_{j=1}^m [\gcd(i,j)=d] \\ &= \sum_{d=1}^{\min(n,m)} \sigma(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} [\gcd(i,j)=1] \\ &= \sum_{d=1}^{\min(n,m)} \sigma(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} \sum_{x|\gcd(i,j)} \mu(x) \\ &= \sum_{d=1}^{\min(n,m)} \sigma(d) \sum_{x=1}^{\min({\lfloor \frac{n}{d} \rfloor},{\lfloor \frac{m}{d} \rfloor})} \mu(x) {\lfloor \frac{n}{dx} \rfloor} {\lfloor \frac{m}{dx} \rfloor} \\ &= \sum_{i=1}^{\min(n,m)} {\lfloor \frac{n}{i} \rfloor} {\lfloor \frac{m}{i} \rfloor} \sum_{d|i} \sigma(d) \mu(\frac{i}{d})\\ \end{aligned} \]

\(h(x) = \sum_{d|x} \sigma(d)\mu(\frac{x}{d})\)

发现当 \(\sigma(d)\le a\) 时,它才能产生贡献,于是我们有了离线询问的想法。

用树状数组来存储 \(h(x)\) 的前缀和,然后处理离线的询问时直接数论分块解决。

修改复杂度均摊是一个调和级数乘树状数组的对数。

故总复杂度为 \(O(Q\sqrt{n}\log_2{n}+n\ln{n}\log_2{n})\)

结合其他数学知识

P1447 [NOI2010] 能量采集 - 洛谷 (luogu.com.cn)

本题结合了容斥

前文有提到,在“Möbius 反演”部分。

P6271 [湖北省队互测2014] 一个人的数论 - 洛谷 (luogu.com.cn)

本题结合了 Bernoulli 数,Lagrange 插值

分析

引理:对于 Möbius 函数 \(\mu(n)\),有:(\(p\) 代表质数)

\[\mu(n) = \begin{cases} 1 & n=1 \\ 0 & p^2|n \\ (-1)^k & n=\prod_{i=1}^k p_i \\ \end{cases} \]

同时可推知:

\[\sum_{d|n} \mu(d) = [n=1] \\ \]

构造函数:

\[\begin{aligned} F(n) &= \sum_{i=1}^n i^k \\ G(n) &= \sum_{i=1}^n i^k [\gcd(i,n)=1] \\ \end{aligned} \]

我们的答案即为 \(G\)

\[F(n) = \sum_{d|n}d^k G(\frac{n}{d}) \\ \]

根据引理,做 Möbius 反演,则有:

\[G(n) = \sum_{d|n} \mu(d) d^k F(\frac{n}{d}) \\ \]

众所周知,通过高阶差分推得 \(F(n)\)\(k+1\) 次多项式是一个经典 Lagrange 插值或者 Bernoulli 数问题,那么我们将它写成如下形式:

\[F(x) = \sum_{i=0}^{k+1} f_i x^i \]

展开,得:

\[\begin{aligned} G(n) &= \sum_{d|n} \mu(d) d^k \sum_{i=0}^{k+1} f_i (\frac{n}{d})^i \\ G(n) &= \sum_{i=0}^{k+1} f_i n^i \sum_{d|n} \mu(d) d^{k-i} \\ \end{aligned} \]

\(\mu(d)d^{k-i}\) 为积性函数,我们又可以化简:

\[\begin{aligned} G(n) &= \sum_{i=0}^{k+1} f_i n^i \sum_{d|n} \prod_{p_j|d} \mu(p_j^t) {p_j}^{t(k-i)} \\ G(n) &= \sum_{i=0}^{k+1} f_i n^i \prod_{p_j|n} \sum_{t=0}^{a_j} \mu(p_j^t) {p_j}^{t(k-i)} \\ \end{aligned} \]

那么根据引理,幂次最高就是 \(1\),所以式子又可以化简:

\[G(n) = \sum_{i=0}^{k+1} f_i n^i \prod_{p_j|n} (1-p_j^{k-i}) \]

然后把 Lagrange 插值拆开做多项式乘法即可,又或者 Bernoulli 数等幂求和,不过当然是后者更好用。

Bernoulli 数等幂求和:

定义 \(S_p = \sum_{i=1}^{n-1} i^p\),则有:(\(B_i\) 表示第 \(i\) 项伯努利数)

\[\begin{aligned} S_1 &= \frac{1}{2} [{2\choose 0}n^2 - {2\choose 1}\frac{1}{2}n^1] \\ S_2 &= \frac{1}{3} [{3\choose 0}n^3 - {3\choose 1}\frac{1}{2}n^2 + {3\choose 2}\frac{1}{6}n^1 ] \\ S_3 &= \frac{1}{4} [{4\choose 0}n^4 - {4\choose 1}\frac{1}{2}n^3 + {4\choose 2}\frac{1}{6}n^2 + {4\choose 3}0n^1] \\ & \dots \\ S_p &= \frac{1}{p+1}\sum_{i=0}^p{p+1 \choose i} B_i n^{p-i+1}\\ \end{aligned} \]

同时发现每行系数之和为 \(0\),那么可以得到伯努利数递推式:

\[\begin{aligned} B_0 &= 1 \\ \sum_{m=0}^p{p+1 \choose m} B_m &= 0 \\ B_m &= [m=0] - \sum_{k=0}^{m-1}{m\choose k}\frac{B_k}{m-k+1} \\ \end{aligned} \]

那么可知:

\[f_i = {k+1\choose k+1-i}\frac{B_{k+1-i}}{k+1} \\ \]

求和

本题结合了容斥,并且有用 Dirichlet 后缀和加速的方法

题意

给定 \(n,m\),求:

\[F(n,m) = \sum_{i=1}^n \sum_{j=1}^m \mu(i)\mu(j)\mu(i\cdot j) \\ \]

其中 \(\mu(i),\sigma(i)\) 分别表示 \(i\) 的莫比乌斯函数以及 \(i\) 的约数和。

分析
法 1

对于 \(i,j\),如果 \(\mu(i),\mu(j)\neq0\),那么有:

\[\sigma(i\cdot j) = \sigma(\frac{i}{\gcd(i,j)}) \sigma(\frac{j}{\gcd(i,j)}) \sigma({\gcd(i,j)}^2) \\ \]

代入原式:

\[\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^m \mu(i) \mu(j) \sigma(i\cdot j) \\ &=\sum_{i=1}^n \sum_{j=1}^m \mu(i) \mu(j) \sigma(\frac{i}{\gcd(i,j)}) \sigma(\frac{j}{\gcd(i,j)}) \sigma(\gcd(i,j)^2) \\ &=\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{i=1}^n \sum_{j=1}^m \mu(i) \mu(j) \sigma(\frac{i}{d}) \sigma(\frac{j}{d}) [\gcd(i,j)=d] \\ &=\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor} \mu(id) \mu(jd) \sigma(i) \sigma(j) [\gcd(i,j)=1] \\ &=\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor} \mu(id) \sigma(i) \sum_{j=1}^{\lfloor\frac{m}{d}\rfloor} \mu(jd) \sigma(j) \sum_{t|\gcd(i,j)} \mu(t) \\ &=\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{t=1}^{\min({\lfloor\frac{n}{d}\rfloor},{\lfloor\frac{m}{d}\rfloor})} \mu(t) \sum_{t|i}^{\lfloor\frac{n}{d}\rfloor} \mu(id) \sigma(i) \sum_{t|j}^{\lfloor\frac{m}{d}\rfloor} \mu(jd) \sigma(j) \\ &=\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{t=1}^{\min({\lfloor\frac{n}{d}\rfloor},{\lfloor\frac{m}{d}\rfloor})} \mu(t) \sum_{i=1}^{\lfloor\frac{n}{td}\rfloor} \mu(tid) \sigma(ti) \sum_{j=1}^{\lfloor\frac{m}{td}\rfloor} \mu(tjd) \sigma(tj) \\ \end{aligned} \]

\(\operatorname{sum}_{t,d}(x) = \sum_{i=1}^{x} \mu(tid)\sigma(ti)\)

原式化为:

\[\begin{aligned} &\sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{t=1}^{\min({\lfloor\frac{n}{d}\rfloor},{\lfloor\frac{m}{d}\rfloor})} \mu(t) \sum_{i=1}^{\lfloor\frac{n}{td}\rfloor} \mu(tid) \sigma(ti) \sum_{j=1}^{\lfloor\frac{m}{td}\rfloor} \mu(tjd) \sigma(tj) \\ &= \sum_{d=1}^{\min(n,m)} \sigma(d^2) \sum_{t=1}^{\min({\lfloor\frac{n}{d}\rfloor},{\lfloor\frac{m}{d}\rfloor})} \mu(t) \operatorname{sum}_{t,d}(\lfloor\frac{n}{td}\rfloor) \operatorname{sum}_{t,d}(\lfloor\frac{m}{td}\rfloor) \\ \end{aligned} \]

它的复杂度近似于 \(O(n\ln^2{n})\)

对于这类和式时间复杂度:

\[\sum_{x_1=1}^m \sum_{x_2=1}^{\frac{m}{x_1}} \dots \sum_{x_i=1}^{\frac{m}{\prod_{j=1}^{i-1}}} \dots \sum_{x_n=1}^{\frac{m}{\prod_{j=1}^{n-1}}} 1 \\ \]

可以积分得到近似复杂度为 \(O(\frac{m\ln^{n-1}{m}}{(n-1)!})\)

法 2

考虑把 \(\sigma\) 拆开:(假设 \(n\le m\)

\[\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^m \mu(i) \mu(j) \sigma(i\cdot j) \\ &= \sum_{i=1}^n \sum_{j=1}^m \mu(i) \mu(j) \sum_{k|(i\cdot j)} k \\ &= \sum_{i=1}^n \sum_{k=1}^{nm} \sum_{\frac{k}{\gcd(i,k)}|j}^m \mu(i) \mu(j) k \\ &= \sum_{g=1}^n \sum_{i=1}^{n} \sum_{k=1}^{nm} [\gcd(i,k)=g] \sum_{\frac{k}{g}|j}^m \mu(i) \mu(j) k \\ &= \sum_{g=1}^n \sum_{i=1}^{{\lfloor \frac{n}{g} \rfloor}} \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} [\gcd(i,k)=1] \sum_{k|j}^m \mu(gi) \mu(j) kg \\ &= \sum_{g=1}^n \sum_{i=1}^{{\lfloor \frac{n}{g} \rfloor}} \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} [\gcd(i,k)=1] \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(gi) \mu(jk) kg \\ &= \sum_{g=1}^n g \sum_{i=1}^{{\lfloor \frac{n}{g} \rfloor}} \mu(gi) \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} k [\gcd(i,k)=1] \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(jk) \\ &= \sum_{i=1}^{n} \sum_{g=1}^{\lfloor \frac{n}{i} \rfloor} g\mu(gi) \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} k \sum_{d|\gcd(i,k)} \mu(d) \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(jk) \\ &=\sum_{d=1}^n \mu(d) \sum_{i=1}^{n} [d|i] \sum_{g=1}^{\lfloor \frac{n}{i} \rfloor} g\mu(gi) \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} k [d|k] \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(jk) \\ \end{aligned} \]

设:

\[f(i) = \sum_{g=1}^{\lfloor \frac{n}{i} \rfloor} g\mu(gi) \\ h(k) = k \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(jk) \\ \]

\(f,h\) 可以调和级数复杂度内求出,原式化为:

\[\begin{aligned} &\sum_{d=1}^n \mu(d) \sum_{i=1}^{n} [d|i] \sum_{g=1}^{\lfloor \frac{n}{i} \rfloor} g\mu(gi) \sum_{k=1}^{{\lfloor \frac{nm}{g} \rfloor}} k [d|k] \sum_{j=1}^{{\lfloor \frac{m}{k} \rfloor}} \mu(jk) \\ &=\sum_{d=1}^n \mu(d) \sum_{d|i}^{n} \sum_{g=1}^{\lfloor \frac{n}{i} \rfloor} g\mu(gi) \sum_{d|k}^{\min(m,{\lfloor \frac{nm}{g} \rfloor})} h(k) \\ &=\sum_{d=1}^n \mu(d) \sum_{d|i}^{n} f(i) \sum_{d|k}^{m} h(k) \\ \end{aligned} \]

调和级数时间复杂度内可以解决,总时间复杂度 \(O(n\ln{n})\)

法 3

如果你学过 Dirichlet 前、后缀和,那么它还可以优化。

\[f(i) = \frac{1}{i} \sum_{x|i}^{n} x\mu(x) \\ h(k) = k \sum_{k|y}^{m} \mu(y) \\ \]

其中 \(f_0(x) = \sum_{x|i}^{n} x\mu(x)\) 以及 \(h_0(k) = \sum_{k|y}^{m} \mu(y)\),都可以 Dirichlet 后缀和优化。

包括最后统计答案的部分:

\[\sum_{d=1}^n \mu(d) \sum_{d|i}^{n} f(i) \sum_{d|k}^{m} h(k) \]

\(F(d) = \sum_{d|i}^n f(i)\)\(H(d) = \sum_{d|k}^m h(k)\) 也都可以 Dirichlet 后缀和优化。

最后复杂度 \(O(n\ln{\ln{n}})\)

posted @ 2025-05-04 16:05  Add_Catalyst  阅读(43)  评论(0)    收藏  举报