下面提到的所有知识不一定同属一个范畴,但是它们的思想和作用相似,所以将其归为一篇文章。
莫比乌斯反演
请先学习狄利克雷卷积,否则您会一脸懵逼。
一般式:
F ( n ) = ∑ d ∣ n G ( d ) → G ( n ) = ∑ d ∣ n μ ( n d ) F ( d ) F ( n ) = ∑ n ∣ d G ( d ) → G ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) \begin{aligned} F(n) = \sum_{d | n} G(d) \rightarrow G(n) = \sum_{d | n} \mu(\frac{n}{d}) F(d) \\ F(n) = \sum_{n | d} G(d) \rightarrow G(n) = \sum_{n | d} \mu(\frac{d}{n}) F(d) \end{aligned} F(n)=d∣n∑G(d)→G(n)=d∣n∑μ(dn)F(d)F(n)=n∣d∑G(d)→G(n)=n∣d∑μ(nd)F(d)
证明可以考虑下面恒等式的第一条。
然后再放一些有助于反演的恒等式:(其中 ∗ * ∗ 指狄利克雷卷积, ϵ ( n ) \epsilon(n) ϵ(n) 表示 [ n = 1 ] [n = 1] [n=1])
μ ∗ 1 = ϵ φ ∗ 1 = i d μ ∗ i d = μ ∗ 1 ∗ φ = ϵ ∗ φ = φ φ ( n ) = ∑ i = 1 n ϵ ( gcd ( n , i ) ) φ ( n m ) = φ ( n ) φ ( m ) gcd ( n , m ) φ ( gcd ( n , m ) ) ∑ i = 1 n ∑ j = 1 n ϵ ( gcd ( i , j ) ) = 2 ⋅ ( ∑ i = 1 n φ ( i ) ) − 1 ∑ d ∣ i j 1 = ∑ x ∣ i ∑ y ∣ j ϵ ( gcd ( x , y ) ) ∑ d ∣ i j k 1 = ∑ x ∣ i ∑ y ∣ j ∑ z ∣ k ϵ ( gcd ( x , y ) ) ϵ ( gcd ( y , z ) ) ϵ ( gcd ( x , z ) ) ⋯ ⋯ \begin{aligned} &\mu * 1 = \epsilon \\ & \varphi * 1 = id \\ & \mu * id = \mu * 1 * \varphi = \epsilon * \varphi = \varphi \\ &\varphi(n) = \sum_{i = 1}^n \epsilon(\gcd(n, i)) \\ &\varphi(nm) = \frac{\varphi(n)\varphi(m)\gcd(n, m)}{\varphi(\gcd(n, m))} \\ &\sum_{i=1}^n\sum_{j = 1}^n \epsilon(\gcd(i, j)) = 2 \cdot (\sum_{i = 1}^n\varphi(i)) - 1 \\ & \sum_{d | ij} 1 = \sum_{x|i} \sum_{y|j} \epsilon(\gcd(x, y)) \\ & \sum_{d | ijk} 1 = \sum_{x|i} \sum_{y|j} \sum_{z|k} \epsilon(\gcd(x, y))\epsilon(\gcd(y, z))\epsilon(\gcd(x, z)) \\ &\cdots\cdots \end{aligned} μ∗1=ϵφ∗1=idμ∗id=μ∗1∗φ=ϵ∗φ=φφ(n)=i=1∑nϵ(gcd(n,i))φ(nm)=φ(gcd(n,m))φ(n)φ(m)gcd(n,m)i=1∑nj=1∑nϵ(gcd(i,j))=2⋅(i=1∑nφ(i))−1d∣ij∑1=x∣i∑y∣j∑ϵ(gcd(x,y))d∣ijk∑1=x∣i∑y∣j∑z∣k∑ϵ(gcd(x,y))ϵ(gcd(y,z))ϵ(gcd(x,z))⋯⋯
推完式子之后,可以考虑用一些数论筛法预处理某些项,或是用整除分块求值。
拿一道例题来讲解吧。
一共 T T T 组询问 ( T ≤ 1 0 4 ) (T \le 10^4) (T≤104),给定常数 K K K,每次询问单独给定 N N N,满足 N ≤ 1 0 7 N \le 10^7 N≤107,求出:
∑ i = 1 N ∑ j = 1 N ( i + j ) K gcd ( i , j ) μ 2 ( gcd ( i , j ) ) ( m o d 2 32 ) \sum_{i = 1}^N\sum_{j = 1}^N(i + j)^K \gcd(i, j)\mu^2(\gcd(i, j))~(\bmod 2^{32}) i=1∑Nj=1∑N(i+j)Kgcd(i,j)μ2(gcd(i,j)) (mod232)
看模数 2 32 2^{32} 232,显然可以自然溢出,这可以帮助我们减小常数。
接下来表演推式子:
原 式 = ∑ d = 1 N ∑ i = 1 N ∑ j = 1 N [ gcd ( i , j ) = d ] ( ( i + j ) K d μ 2 ( d ) ) = ∑ d = 1 N d K + 1 μ 2 ( d ) ∑ i = 1 ⌊ N d ⌋ ∑ j = 1 ⌊ N d ⌋ ϵ ( gcd ( i , j ) ) ( i + j ) K = ∑ d = 1 N d K + 1 μ 2 ( d ) ∑ i = 1 ⌊ N d ⌋ ∑ j = 1 ⌊ N d ⌋ ( i + j ) K ∑ x ∣ gcd ( i , j ) μ ( x ) = ∑ d = 1 N d K + 1 μ 2 ( d ) ∑ x = 1 ⌊ N d ⌋ x K μ ( x ) ∑ i = 1 ⌊ N d x ⌋ ∑ j = 1 ⌊ N d x ⌋ ( i + j ) K = ∑ T = 1 N T K ∑ i = 1 ⌊ N T ⌋ ∑ j = 1 ⌊ N T ⌋ ( i + j ) K ∑ d ∣ T d μ 2 ( d ) μ ( T d ) \begin{aligned} 原式 &= \sum_{d = 1}^N\sum_{i = 1}^N\sum_{j = 1}^N[\gcd(i, j) = d]((i + j)^K d\mu^2(d)) \\ &= \sum_{d = 1}^Nd^{K + 1}\mu^2(d)\sum_{i = 1}^{\lfloor\frac{N}{d}\rfloor} \sum_{j = 1}^{\lfloor\frac{N}{d}\rfloor} \epsilon(\gcd(i, j))(i + j)^K \\ &= \sum_{d = 1}^N d^{K + 1}\mu^2(d)\sum_{i = 1}^{\lfloor\frac{N}{d}\rfloor}\sum_{j = 1}^{\lfloor\frac{N}{d}\rfloor}(i + j)^K\sum_{x | \gcd(i, j)} \mu(x) \\ &= \sum_{d = 1}^Nd^{K + 1}\mu^2(d)\sum_{x = 1}^{\lfloor\frac{N}{d}\rfloor}x^K\mu(x)\sum_{i = 1}^{\lfloor\frac{N}{dx}\rfloor}\sum_{j = 1}^{\lfloor\frac{N}{dx}\rfloor}(i + j)^K \\ &= \sum_{T = 1}^NT^K\sum_{i = 1}^{\lfloor\frac{N}{T}\rfloor} \sum_{j = 1}^{\lfloor\frac{N}{T}\rfloor}(i + j)^K \sum_{d|T}d\mu^2(d)\mu(\frac{T}{d}) \end{aligned} 原式=d=1∑Ni=1∑Nj=1∑N[gcd(i,j)=d]((i+j)Kdμ2(d))=d=1∑NdK+1μ2(d)i=1∑⌊dN⌋j=1∑⌊dN⌋ϵ(gcd(i,j))(i+j)K=d=1∑NdK+1μ2(d)i=1∑⌊dN⌋j=1∑⌊dN⌋(i+j)Kx∣gcd(i,j)∑μ(x)=d=1∑NdK+1μ2(d)x=1∑⌊dN⌋xKμ(x)i=1∑⌊dxN⌋j=1∑⌊dxN⌋(i+j)K=T=1∑NTKi=1∑⌊TN⌋j=1∑⌊TN⌋(i+j)Kd∣T∑dμ2(d)μ(dT)
到这里式子就是可做的了。
我猜你现在肯定一脸懵。
那就先来讲一讲吧。
- S t e p 1 Step~1 Step 1
我们考虑枚举这个 gcd \gcd gcd 的值。
为什么这里要做这样一个看似只会添一层循环的无意义举动呢?
可以发现,在后面的式子中多出了一个艾弗森括号,这个括号里写下的等式是可以转化为单位元的形式的。
- S t e p 2 Step~2 Step 2
我们考虑对于每一个 d d d,只枚举 d d d 的倍数。
(实际上,此时枚举的 i , j i, j i,j 在后面的运算中会乘上一个 d d d。)
这样,艾弗森括号中的等式就可以被改写了,具体来说就是 [ gcd ( i d , j d ) = d ] = [ gcd ( i , j ) = 1 ] [\gcd(id, jd) = d] =[\gcd(i, j) = 1] [gcd(id,jd)=d]=[gcd(i,j)=1]。
在上面的式子中,后者已经写成了单位元的形式。
值得注意的是,由于 i , j i, j i,j 实际上除去了一个 d d d,所以运算中多出来的一个 d K d^K dK

本文介绍了几种不同的反演变换方法,包括莫比乌斯反演、二项式反演、单位根反演和快速沃尔什变换等,通过具体的例题和推导过程展示了这些反演技巧在解决数论问题中的应用。文章适合对数论和算法有一定了解的读者,旨在帮助读者理解和掌握反演技术。
最低0.47元/天 解锁文章
2401

被折叠的 条评论
为什么被折叠?



