莫比乌斯反演一些式子的推导(附题目)

本文深入探讨了数论函数如狄利克雷卷积、莫比乌斯函数及其应用,通过详细解析经典式子的推导过程,帮助读者掌握莫比乌斯反演技巧,涵盖从基础知识到高级拓展的全面内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一些符号和等式

1. a ∣ b 1.a|b 1.ab意为 a a a整除 b b b
2. [ a = b ] = { 1 , a = b 0 , a ≠ b 2.[a=b]=\begin{cases} 1,a=b\\0,a ≠b \end{cases} 2.[a=b]={1,a=b0,a=b
3. ⌊ a ⌋ 3.\lfloor a \rfloor 3.a意为对 a a a向下取整
4. ⌊ ⌊ n / d ⌋ k ⌋ = ⌊ n d k ⌋ 4.\lfloor \frac{\lfloor n/d \rfloor}{k} \rfloor = \lfloor \frac{n}{dk} \rfloor 4.kn/d=dkn

二、狄利克雷卷积

关于狄利克雷卷积,请戳这里
然后莫比乌斯反演中需要知道的是
φ \varphi φ为欧拉函数, μ \mu μ为莫比乌斯函数, i d ( n ) = n id(n)=n id(n)=n ε ( n ) = [ n = 1 ] \varepsilon(n)=[n=1] ε(n)=[n=1] I ( n ) = 1 I(n)=1 I(n)=1
φ ∗ I = i d \varphi*I=id φI=id
μ ∗ I = ε \mu*I=\varepsilon μI=ε
在①等式两边同时 ∗ μ *\mu μ,我们可以得到 φ ∗ I ∗ μ = μ ∗ i d \varphi*I*\mu=\mu*id φIμ=μid
再根据②,我们有 φ ∗ ε = μ ∗ i d \varphi*\varepsilon=\mu*id φε=μid
对于任意数论函数都有 f = f ∗ ε f=f*\varepsilon f=fε,故最终我们有:
μ ∗ i d = φ \mu*id=\varphi μid=φ
这里面③是非常重要的,它揭示了欧拉函数和莫比乌斯函数的关系,在有些式子的化简当中起到至关重要的作用

三、莫比乌斯反演

对于莫比乌斯反演的题目,我们只要记住上面的①式就行,写开之后就是这样
∑ d ∣ n μ ( d ) = [ n = 1 ] \displaystyle\sum_{d|n}\mu(d)=[n=1] dnμ(d)=[n=1]
那么 [ g c d ( i , j ) = 1 ] [gcd(i,j)=1] [gcd(i,j)=1]就有
∑ d ∣ g c d ( i , j ) μ ( d ) = [ g c d ( i , j ) = 1 ] \displaystyle\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1] dgcd(i,j)μ(d)=[gcd(i,j)=1]
亦可以写作
∑ d ∣ i , d ∣ j μ ( d ) = [ g c d ( i , j ) = 1 ] \displaystyle\sum_{d|i,d|j}\mu(d)=[gcd(i,j)=1] di,djμ(d)=[gcd(i,j)=1]
再做一下拓展求 [ g c d ( i , j ) = k ] [gcd(i,j)=k] [gcd(i,j)=k]
[ g c d ( i , j ) = k ] ⇔ [ g c d ( i k , j k ) = 1 ] [gcd(i,j)=k]\Leftrightarrow[gcd(\frac{i}{k},\frac{j}{k})=1] [gcd(i,j)=k][gcd(ki,kj)=1],故有
∑ d ∣ i k , d ∣ j k μ ( d ) = [ g c d ( i , j ) = k ] \displaystyle\sum_{d|\frac{i}{k},d|\frac{j}{k}}\mu(d)=[gcd(i,j)=k] dkidkjμ(d)=[gcd(i,j)=k]

四、经典式子的推导

1. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = 1 ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=1] i=1nj=1n[gcd(i,j)=1]

推导过程

∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = 1 ] = ∑ i = 1 n ∑ j = 1 n ∑ d ∣ i , d ∣ j μ ( d ) = ∑ d = 1 n μ ( d ) ∑ d ∣ i ∑ d ∣ j 1 = ∑ d = 1 n μ ( d ) ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ 1 = ∑ d = 1 n μ ( d ) ⌊ n d ⌋ 2 \begin{aligned} \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=1] & = \displaystyle\sum_{i=1}^{n} \displaystyle\sum_{j=1}^{n} \displaystyle\sum_{d|i, d|j} \mu(d) \\ & = \displaystyle\sum_{d=1}^{n} \mu(d) \displaystyle\sum_{d|i} \displaystyle\sum_{d|j} 1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d)\displaystyle\sum_{i=1}^{\lfloor n/d \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/d \rfloor}1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d) \lfloor \frac{n}{d} \rfloor ^ 2 \end{aligned} i=1nj=1n[gcd(i,j)=1]=i=1nj=1ndi,djμ(d)=d=1nμ(d)didj1=d=1nμ(d)i=1n/dj=1n/d1=d=1nμ(d)dn2

其中的第二步,先枚举 d d d
再看下一步,因为 d ∣ i , d ∣ j d|i,d|j di,dj,因此 i i i j j j一定是 d d d的整数倍
于是我们枚举 i = 1 , 2 , . . . , ⌊ n / d ⌋ i=1, 2, ..., \lfloor n/d \rfloor i=1,2,...,n/d,那么 i ∗ d i*d id就是原来的 i i i值,这样就能保证 d ∣ i d|i di
代码实现比较简单,求一个 μ ( i ) \mu(i) μ(i)的前缀和,加一个数论分块就行

2. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = k ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=k] i=1nj=1n[gcd(i,j)=k]

推导过程

∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = k ] = ∑ i = 1 n ∑ j = 1 n ∑ d ∣ i k , d ∣ j k μ ( d ) = ∑ i = 1 ⌊ n / k ⌋ ∑ j = 1 ⌊ n / k ⌋ ∑ d ∣ i , d ∣ j μ ( d ) = ∑ d = 1 n μ ( d ) ∑ i = 1 ⌊ n / d k ⌋ ∑ j = 1 ⌊ n / d k ⌋ 1 = ∑ d = 1 n μ ( d ) ⌊ n d k ⌋ 2 \begin{aligned} \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=k] & = \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\displaystyle\sum_{d|\frac{i}{k},d|\frac{j}{k}}\mu(d) \\ & = \displaystyle\sum_{i=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{d|i,d|j}\mu(d) \\ & = \displaystyle\sum_{d=1}^{n}\mu(d)\displaystyle\sum_{i=1}^{\lfloor n/dk \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/dk \rfloor}1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d) \lfloor \frac{n}{dk} \rfloor ^ 2 \end{aligned} i=1nj=1n[gcd(i,j)=k]=i=1nj=1ndki,dkjμ(d)=i=1n/kj=1n/kdi,djμ(d)=d=1nμ(d)i=1n/dkj=1n/dk1=d=1nμ(d)dkn2
其中第二步我们将 i i i j j j同时缩小了 k k k倍,于是有 ∑ i = 1 ⌊ n / k ⌋ ∑ j = 1 ⌊ n / k ⌋ ∑ d ∣ i , d ∣ j μ ( d ) \displaystyle\sum_{i=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{d|i,d|j}\mu(d) i=1n/kj=1n/kdi,djμ(d)
其余部分和上一条一样的

练习题

3. ∑ i = 1 n ∑ j = 1 n g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) i=1nj=1ngcd(i,j)

推导过程

∑ i = 1 n ∑ j = 1 n g c d ( i , j ) = ∑ d = 1 n ∑ i = 1 n ∑ j = 1 n d [ g c d ( i , j ) = d ] = ∑ d = 1 n d ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = d ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ [ g c d ( i , j ) = 1 ] = ∑ d = 1 d ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ ∑ t ∣ i , t ∣ j μ ( t ) = ∑ d = 1 d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) ⌊ n d t ⌋ 2 \begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) & = \displaystyle\sum_{d = 1}^{n} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n}d[gcd(i, j)= d] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n}[gcd(i, j) = d] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{j = 1}^{ \lfloor n / d \rfloor } [gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1} d \displaystyle\sum_{i = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{j = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{t | i, t|j} \mu(t) \\ & = \displaystyle\sum_{d = 1} d \displaystyle\sum_{t = 1}^{ \lfloor n / d \rfloor } \mu(t) \lfloor \frac{n}{dt} \rfloor ^ 2 \end{aligned} i=1nj=1ngcd(i,j)=d=1ni=1nj=1nd[gcd(i,j)=d]=d=1ndi=1nj=1n[gcd(i,j)=d]=d=1ndi=1n/dj=1n/d[gcd(i,j)=1]=d=1di=1n/dj=1n/dti,tjμ(t)=d=1dt=1n/dμ(t)dtn2
到这里,我们已经能够在 O ( n ) O(n) O(n)的时间内计算,但是还不够,我们仍可以继续优化下去
T = t d T=td T=td,要使 ⌊ n d t ⌋ > 0 \lfloor \frac{n}{dt} \rfloor \gt 0 dtn>0,于是我们枚举 T = t d = 1 , 2 , . . . , n T = td = 1, 2, ..., n T=td=1,2,...,n
∑ i = 1 n ∑ j = 1 n g c d ( i , j ) = ∑ T = 1 n ⌊ n T ⌋ 2 ∑ t ∣ T μ ( d ) ( T d ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) = \displaystyle\sum_{T = 1}^{n} \lfloor \frac{n}{T} \rfloor ^ 2 \displaystyle\sum_{t | T} \mu(d)(\frac{T}{d}) i=1nj=1ngcd(i,j)=T=1nTn2tTμ(d)(dT)
注意, ∑ t ∣ T μ ( d ) ( T d ) = ( μ ∗ i d ) ( T ) = φ ( T ) \displaystyle\sum_{t | T} \mu(d)(\frac{T}{d}) = (\mu*id)(T)=\varphi(T) tTμ(d)(dT)=(μid)(T)=φ(T)
所以最终我们有
∑ i = 1 n ∑ j = 1 n g c d ( i , j ) = ∑ T = 1 n ⌊ n T ⌋ 2 φ ( T ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) = \displaystyle\sum_{T = 1}^{n} \lfloor \frac{n}{T} \rfloor ^ 2 \varphi(T) i=1nj=1ngcd(i,j)=T=1nTn2φ(T)
这样就能够 O ( n ) O(\sqrt n) O(n )计算出我们的答案
记住这里的优化方式,以后会经常碰到,当你发现优化不下去的时候,考虑代换

练习题

4. ∑ i = 1 n ∑ j = 1 n l c m ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) i=1nj=1nlcm(i,j)

推导过程

首先 l c m ( i , j ) = i j g c d ( i , j ) lcm(i, j) = \frac{ij}{gcd(i,j)} lcm(i,j)=gcd(i,j)ij
∑ i = 1 n ∑ j = 1 n l c m ( i , j ) = ∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) = ∑ d = 1 n ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ i d j d d [ g c d ( i , j ) = 1 ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ i j ∑ t ∣ i , t ∣ j μ ( t ) = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) ∑ i = 1 ⌊ n / d t ⌋ i t ∑ j = 1 ⌊ n / d t ⌋ j t = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 ∑ i = 1 ⌊ n / d t ⌋ i ∑ j = 1 ⌊ n / d t ⌋ j \begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) & = \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} \frac{ij}{gcd(i, j)}\\ & = \displaystyle\sum_{d = 1}^{n} \displaystyle\sum_{i = 1}^{\lfloor n/d \rfloor} \displaystyle\sum_{j = 1}^{\lfloor n/d \rfloor} \frac{idjd}{d}[gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{\lfloor n/d \rfloor} \displaystyle\sum_{j = 1}^{\lfloor n/d \rfloor} ij \displaystyle\sum_{t | i,t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{t = 1}^{\lfloor n/d \rfloor} \mu(t) \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} it \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} jt \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} j \\ \end{aligned} i=1nj=1nlcm(i,j)=i=1nj=1ngcd(i,j)ij=d=1ni=1n/dj=1n/ddidjd[gcd(i,j)=1]=d=1ndi=1n/dj=1n/dijti,tjμ(t)=d=1ndt=1n/dμ(t)i=1n/dtitj=1n/dtjt=d=1ndt=1n/dμ(t)t2i=1n/dtij=1n/dtj

我们记 s u m 1 ( n ) = 1 + 2 + . . . + n = n ( n + 1 ) / 2 sum_1(n) = 1 + 2 + ... + n = n(n+1)/2 sum1(n)=1+2+...+n=n(n+1)/2
其中 ∑ i = 1 ⌊ n / d t ⌋ i = 1 + 2 + . . . + ⌊ n / d t ⌋ = s u m 1 ( ⌊ n / d t ⌋ ) \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i = 1 + 2 + ... + \lfloor n / dt \rfloor = sum_1(\lfloor n / dt \rfloor) i=1n/dti=1+2+...+n/dt=sum1(n/dt)
∑ i = 1 n ∑ j = 1 n l c m ( i , j ) = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 s u m 1 ( ⌊ n / d t ⌋ ) 2 \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 sum_1(\lfloor n / dt \rfloor) ^ 2 \\ i=1nj=1nlcm(i,j)=d=1ndt=1n/dμ(t)t2sum1(n/dt)2
f ( n ) = ∑ t = 1 n μ ( t ) t 2 s u m 1 ( ⌊ n / t ⌋ ) 2 f(n)=\displaystyle\sum_{t = 1} ^ {n} \mu(t)t ^ 2 sum_1(\lfloor n / t \rfloor) ^ 2 f(n)=t=1nμ(t)t2sum1(n/t)2,那么 f ( n ) f(n) f(n)可以 O ( n ) O(\sqrt n) O(n )求,于是
∑ i = 1 n ∑ j = 1 n l c m ( i , j ) = ∑ d = 1 n d f ( ⌊ n / d ⌋ ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) = \displaystyle\sum_{d = 1} ^ n df(\lfloor n / d \rfloor) i=1nj=1nlcm(i,j)=d=1ndf(n/d)
最后总体就是 O ( n ) O ( n ) = O ( n ) O(\sqrt n)O(\sqrt n)=O(n) O(n )O(n )=O(n)

练习题

5. ∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) i=1nj=1nijgcd(i,j)

推导过程

∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) = ∑ d = 1 n d ∑ i = 1 n ∑ j = 1 n i j [ g c d ( i , j ) = d ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ i d j d ∑ t ∣ i , t ∣ j μ ( t ) = ∑ d = 1 n d 3 ∑ t = 1 ⌊ n / d ⌋ μ ( t ) ∑ i = 1 ⌊ n / d t ⌋ i t ∑ j = 1 ⌊ n / d t ⌋ j t = ∑ d = 1 n d 3 ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 ∑ i = 1 ⌊ n / d t ⌋ i ∑ j = 1 ⌊ n / d t ⌋ j = ∑ d = 1 n d 3 ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 s u m 1 ( ⌊ n / d t ⌋ ) 2 \begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} ij[gcd(i, j)=d] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} idjd \displaystyle\sum_{t|i,t|j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} it \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} jt \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} j \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 sum_1(\lfloor n / dt \rfloor) ^ 2 \\ \end{aligned} i=1nj=1nijgcd(i,j)=d=1ndi=1nj=1nij[gcd(i,j)=d]=d=1ndi=1n/dj=1n/didjdti,tjμ(t)=d=1nd3t=1n/dμ(t)i=1n/dtitj=1n/dtjt=d=1nd3t=1n/dμ(t)t2i=1n/dtij=1n/dtj=d=1nd3t=1n/dμ(t)t2sum1(n/dt)2
到这里,我们已经能够 O ( n ) O(n) O(n)求得答案,但是别慌,我们仍然可以继续优化
又是熟悉的代换,令 T = d t T = dt T=dt,于是
∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) = ∑ T = 1 n s u m 1 ( ⌊ n / T ⌋ ) 2 ∑ t ∣ T μ ( t ) t 2 ( T t ) 3 = ∑ T = 1 n s u m 1 ( ⌊ n / T ⌋ ) 2 T 2 ∑ t ∣ T μ ( t ) ( T t ) \begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) & = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 \displaystyle\sum_{t | T} \mu(t) t ^ 2 (\frac{T}{t}) ^ 3 \\ & = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 T ^ 2 \displaystyle\sum_{t | T} \mu(t)(\frac{T}{t}) \end{aligned} i=1nj=1nijgcd(i,j)=T=1nsum1(n/T)2tTμ(t)t2(tT)3=T=1nsum1(n/T)2T2tTμ(t)(tT)
又是熟悉的 μ ∗ i d = φ \mu*id=\varphi μid=φ
于是最终
∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) = ∑ T = 1 n s u m 1 ( ⌊ n / T ⌋ ) 2 T 2 φ ( T ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 T ^ 2 \varphi(T) i=1nj=1nijgcd(i,j)=T=1nsum1(n/T)2T2φ(T)
复杂度 O ( n ) O(\sqrt n) O(n )

练习题

这道练习题,因为数据比较大,需要用到杜教筛

五、拓展提高

学完了上面的内容之后,相信你应该已经基本掌握了比较经典的莫比乌斯反演
写了一些题,你会发现,莫比乌斯反演难,一是难在推导,二是难在一些预处理,比如要你预先处理好一些不常见的积性函数
下面的题目就按照难度逐个击破

1. ∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) i=1Nj=1Nlcm(ai,aj)

原题链接

给你 N N N个数 a 1 , a 2 , . . . , a N a_1, a_2, ..., a_N a1,a2,...,aN,其中 1 ≤ a i ≤ 50000 1\leq a_i \leq 50000 1ai50000,求 ∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i,a_j) i=1Nj=1Nlcm(ai,aj)

推导过程

是不是看着很熟悉呢?经典推导中第四条
先对式子做基本的变形
∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) = ∑ i = 1 N ∑ j = 1 N a i a j g c d ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) = \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N \frac{a_i a_j}{gcd(a_i, a_j)} i=1Nj=1Nlcm(ai,aj)=i=1Nj=1Ngcd(ai,aj)aiaj
分析一下,光有 a i a_i ai是没用的,我们要将式子中 a i a_i ai转化为数字才行
所以我们不妨直接枚举 i , j = 1 , 2 , 3 , . . . , n = 50000 i, j = 1, 2, 3, ..., n = 50000 i,j=1,2,3,...,n=50000,这样就有
∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) = ∑ i = 1 n ∑ j = 1 n c n t i c n t j i j g c d ( i , j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} cnt_i cnt_j \frac{ij}{gcd(i, j)} i=1Nj=1Nlcm(ai,aj)=i=1nj=1ncnticntjgcd(i,j)ij
其中 c n t i , c n t j cnt_i,cnt_j cnti,cntj为数 i , j i,j i,j出现次数,于是我们继续
∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) = ∑ d = 1 n ∑ i = 1 n ∑ j = 1 n c n t i c n t j i j d [ g c d ( i , j ) = d ] = ∑ d = 1 n ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ c n t i d c n t j d i j d 2 d [ g c d ( i , j ) = 1 ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ i j c n t i d c n t j d ∑ t ∣ i , t ∣ j μ ( t ) = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 ∑ i = 1 ⌊ n / d t ⌋ i c n t i d t ∑ j = 1 ⌊ n / d t ⌋ j c n t j d t = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t 2 ( ∑ i = 1 ⌊ n / d t ⌋ i c n t i d t ) 2 \begin{aligned} \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) & = \displaystyle\sum_{d = 1} ^ {n} \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} cnt_i cnt_j \frac{ij}{d} [gcd(i, j)=d] \\ & = \displaystyle\sum_{d = 1} ^ {n} \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} cnt_{id} cnt_{jd} \frac{i j d ^ 2}{d}[gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} ijcnt_{id} cnt_{jd} \displaystyle\sum_{t | i, t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / d t \rfloor} i cnt_{i d t} \displaystyle\sum_{j = 1} ^ {\lfloor n / d t \rfloor} j cnt_{j d t} \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) t ^ 2 \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / d t \rfloor} i cnt_{i d t} \right) ^ 2 \end{aligned} i=1Nj=1Nlcm(ai,aj)=d=1ni=1nj=1ncnticntjdij[gcd(i,j)=d]=d=1ni=1n/dj=1n/dcntidcntjddijd2[gcd(i,j)=1]=d=1ndi=1n/dj=1n/dijcntidcntjdti,tjμ(t)=d=1ndt=1n/dμ(t)t2i=1n/dticntidtj=1n/dtjcntjdt=d=1ndt=1n/dμ(t)t2i=1n/dticntidt2
到这里我们令 T = d t T=dt T=dt
∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) = ∑ T = 1 n ( ∑ i = 1 ⌊ n / T ⌋ i c n t i T ) 2 ∑ t ∣ T μ ( t ) t 2 ( T t ) = ∑ T = 1 n T ( ∑ i = 1 ⌊ n / T ⌋ i c n t i T ) 2 ∑ t ∣ T μ ( t ) t \begin{aligned} \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} \right) ^ 2 \displaystyle\sum_{t | T} \mu(t) t ^ 2 (\frac{T}{t}) \\ & = \displaystyle\sum_{T = 1} ^ {n} T \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} \right) ^ 2 \displaystyle\sum_{t | T} \mu(t) t \\ \end{aligned} i=1Nj=1Nlcm(ai,aj)=T=1ni=1n/TicntiT2tTμ(t)t2(tT)=T=1nTi=1n/TicntiT2tTμ(t)t
先看后面的 ∑ t ∣ T μ ( t ) t \displaystyle\sum_{t | T} \mu(t)t tTμ(t)t,我们记做 f ( T ) f(T) f(T),我们可以 O ( n l o g n ) O(nlogn) O(nlogn)预处理:

for (int t = 1; t <= n; t++)
        for (int T = t; T <= n; T += t)
            f[T] += mu[t] * t;

关于复杂度,这个是一个调和级数,即 n 1 + n 2 + n 3 + . . . + 1 \frac{n}{1} + \frac{n}{2} + \frac{n}{3} + ... + 1 1n+2n+3n+...+1,是 n l o g n nlogn nlogn级别的
再看 ∑ i = 1 ⌊ n / T ⌋ i c n t i T \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} i=1n/TicntiT,显然它也是是一个关于 T T T的函数
我们记 s ( T ) = ∑ i = 1 ⌊ n / T ⌋ i c n t i T = ∑ T ∣ t t T c n t t = 1 T ∑ T ∣ t t c n t t s(T) = \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} = \displaystyle\sum_{T | t} \frac{t}{T} cnt_t = \frac{1}{T} \displaystyle\sum_{T | t} t cnt_t s(T)=i=1n/TicntiT=TtTtcntt=T1Tttcntt
这样也能 O ( n l o g n ) O(nlogn) O(nlogn)预处理

for (int T = 1; T <= n; T++) {
        for (int t = T; t <= n; t += T)
            s[T] += t * cnt[t];
        s[T] /= T;
    }

于是这题就能轻松搞定了

AC代码

2. ∑ i = 1 n l c m ( i , n ) \displaystyle\sum_{i = 1} ^ {n} lcm(i, n) i=1nlcm(i,n)

原题链接
推导过程

∑ i = 1 n l c m ( i , n ) = ∑ i = 1 n i n g c d ( i , n ) = n ∑ i = 1 n i g c d ( i , n ) = n ∑ d ∣ n ∑ i = 1 n / d i d d [ g c d ( i , n d ) = 1 ] = n ∑ d ∣ n ∑ i = 1 n / d i [ g c d ( i , n d ) = 1 ] = n ∑ d ∣ n ∑ i = 1 d i [ g c d ( i , d ) = 1 ] = n ∑ d ∣ n ∑ i = 1 d i ∑ t ∣ i , t ∣ d μ ( t ) = n ∑ d ∣ n ∑ t ∣ d μ ( t ) ∑ i = 1 d / t i t = n ∑ d ∣ n ∑ t ∣ d μ ( t ) t ∑ i = 1 d / t i = n ∑ d ∣ n ∑ t ∣ d μ ( t ) t d t ( d t + 1 ) 2 = n 2 ∑ d ∣ n [ ∑ t ∣ d μ ( t ) d 2 t + ∑ t ∣ d μ ( t ) d ] = n 2 ∑ d ∣ n d [ ∑ t ∣ d μ ( t ) d t + ∑ t ∣ d μ ( t ) ] = n 2 ∑ d ∣ n d [ ( μ ∗ i d ) ( d ) + ( μ ∗ I ) ( d ) ] = n 2 ∑ d ∣ n d [ φ ( d ) + ε ( d ) ] \begin{aligned} \displaystyle\sum_{i = 1} ^ {n} lcm(i, n) & = \displaystyle\sum_{i = 1} ^ {n} \frac{in}{gcd(i, n)} \\ & = n \displaystyle\sum_{i = 1} ^ {n} \frac{i}{gcd(i, n)} \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {n / d} \frac{id}{d} [gcd(i, \frac{n}{d}) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {n / d} i [gcd(i, \frac{n}{d}) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {d} i [gcd(i, d) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {d} i \displaystyle\sum_{t | i, t | d} \mu(t) \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t) \displaystyle\sum_{i = 1} ^ {d / t} i t \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t)t \displaystyle\sum_{i = 1} ^ {d / t} i \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t) t \frac{\frac{d}{t} (\frac{d}{t} + 1) }{2} \\ & = \frac{n}{2} \displaystyle\sum_{d | n} \left[ \displaystyle\sum_{t | d} \mu(t) \frac{d ^ 2}{t} + \displaystyle\sum_{t | d} \mu(t) d \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \displaystyle\sum_{t | d} \mu(t) \frac{d}{t} + \displaystyle\sum_{t | d} \mu(t) \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \left( \mu*id \right) \left( d \right) + \left( \mu*I \right) \left( d \right) \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \varphi \left( d \right) + \varepsilon \left( d \right) \right] \\ \end{aligned} i=1nlcm(i,n)=i=1ngcd(i,n)in=ni=1ngcd(i,n)i=ndni=1n/ddid[gcd(i,dn)=1]=ndni=1n/di[gcd(i,dn)=1]=ndni=1di[gcd(i,d)=1]=ndni=1diti,tdμ(t)=ndntdμ(t)i=1d/tit=ndntdμ(t)ti=1d/ti=ndntdμ(t)t2td(td+1)=2ndntdμ(t)td2+tdμ(t)d=2ndndtdμ(t)td+tdμ(t)=2ndnd[(μid)(d)+(μI)(d)]=2ndnd[φ(d)+ε(d)]
显然所有答案可以像上一题那样 O ( n l o g n ) O(nlogn) O(nlogn)处理

AC代码

3. ∑ i = 1 N g c d ( ⌊ i 3 ⌋ , i ) \displaystyle\sum_{i = 1} ^ {N} gcd\left( \lfloor \sqrt[3]{i} \rfloor, i \right) i=1Ngcd(3i ,i)

原题链接(2019年杭电多校第一场)
推导过程

n = N 3 n = \sqrt[3] {N} n=3N

∑ i = 1 N g c d ( ⌊ i 3 ⌋ , i ) = ∑ i = 1 n ∑ j = i 3 min ⁡ ( ( i + 1 ) 3 − 1 , N ) g c d ( i , j ) = ∑ i = 1 n − 1 ∑ j = i 3 ( i + 1 ) 3 − 1 g c d ( i , j ) + ∑ j = n 3 N g c d ( n , j ) \begin{aligned} \displaystyle\sum_{i = 1} ^ {N} gcd\left( \lfloor \sqrt[3]{i} \rfloor, i \right) & = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ { \min(\left( i + 1 \right) ^ 3 - 1, N) } gcd(i, j) \\ & = \displaystyle\sum_{i = 1} ^ {n - 1} \displaystyle\sum_{j = i ^ 3} ^ {\left( i + 1 \right) ^ 3 - 1} gcd(i, j) + \displaystyle\sum_{j = n ^ 3} ^ {N} gcd(n, j) \end{aligned} i=1Ngcd(3i ,i)=i=1nj=i3min((i+1)31,N)gcd(i,j)=i=1n1j=i3(i+1)31gcd(i,j)+j=n3Ngcd(n,j)
先求前半部分
不妨记 f ( n ) = ∑ i = 1 n ∑ j = i 3 ( i + 1 ) 3 − 1 g c d ( i , j ) f\left( n \right) = \displaystyle\sum_{i = 1} ^ n \displaystyle\sum_{j = i ^ 3} ^ { \left( i + 1 \right) ^ 3 - 1 } gcd\left( i, j \right) f(n)=i=1nj=i3(i+1)31gcd(i,j),那么原式就是要求 f ( n − 1 ) f\left( n - 1 \right) f(n1)
f ( n ) = ∑ i = 1 n ∑ j = i 3 ( i + 1 ) 3 − 1 g c d ( i , j ) = ∑ d = 1 n d ∑ i = 1 n ∑ j = i 3 ( i + 1 ) 3 − 1 [ g c d ( i , j ) = d ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = ⌊ ( i d ) 3 / d ⌋ ⌊ [ ( i d + 1 ) 3 − 1 ] / d ⌋ [ g c d ( i , j ) = 1 ] = ∑ d = 1 n d ∑ i = 1 ⌊ n / d ⌋ ∑ j = ⌊ ( i d ) 3 / d ⌋ ⌊ [ ( i d + 1 ) 3 − 1 ] / d ⌋ ∑ t ∣ i , t ∣ j μ ( t ) = ∑ d = 1 n d ∑ t = 1 ⌊ n / d ⌋ μ ( t ) ( ∑ i = 1 ⌊ n / d t ⌋ ∑ j = ⌊ ( i d t ) 3 / d t ⌋ ⌊ [ ( i d t + 1 ) 3 − 1 ] / d t ⌋ ) \begin{aligned} f\left( n \right) & = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ { \left( i + 1 \right) ^ 3 - 1 } gcd\left( i, j \right) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ {\left( i + 1 \right) ^ 3 - 1} \left[ gcd\left( i, j \right) = d \right] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ { \lfloor n / d \rfloor } \displaystyle\sum_{j = \lfloor (id) ^ 3 / d \rfloor} ^ { \lfloor \left[ \left( id + 1 \right) ^ 3 - 1 \right] / d \rfloor } \left[ gcd\left( i, j \right) = 1 \right] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ { \lfloor n / d \rfloor } \displaystyle\sum_{j = \lfloor (id) ^ 3 / d \rfloor} ^ { \lfloor \left[ \left( id + 1 \right) ^ 3 - 1 \right] / d \rfloor } \displaystyle\sum_{t | i, t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ { \lfloor n / d \rfloor } \mu(t) \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / dt \rfloor } \displaystyle\sum_{j = \lfloor (idt) ^ 3 / dt \rfloor} ^ { \lfloor \left[ \left( idt + 1 \right) ^ 3 - 1 \right] / dt \rfloor } \right) \\ \end{aligned} f(n)=i=1nj=i3(i+1)31gcd(i,j)=d=1ndi=1nj=i3(i+1)31[gcd(i,j)=d]=d=1ndi=1n/dj=(id)3/d[(id+1)31]/d[gcd(i,j)=1]=d=1ndi=1n/dj=(id)3/d[(id+1)31]/dti,tjμ(t)=d=1ndt=1n/dμ(t)i=1n/dtj=(idt)3/dt[(idt+1)31]/dt
接下来老方法,令 T = d t T = dt T=dt
f ( n ) = ∑ T = 1 n ( ∑ i = 1 ⌊ n / T ⌋ ∑ j = ⌊ ( i T ) 3 / T ⌋ ⌊ [ ( i T + 1 ) 3 − 1 ] / T ⌋ ) ∑ t ∣ T μ ( t ) ( T t ) = ∑ T = 1 n ( ∑ i = 1 ⌊ n / T ⌋ ∑ j = ⌊ ( i T ) 3 / T ⌋ ⌊ [ ( i T + 1 ) 3 − 1 ] / T ⌋ ) φ ( T ) \begin{aligned} f\left( n \right) & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \right) \displaystyle\sum_{t | T} \mu(t) \left( \frac{T}{t} \right) \\ & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \right) \varphi(T) \\ \end{aligned} f(n)=T=1ni=1n/Tj=(iT)3/T[(iT+1)31]/TtTμ(t)(tT)=T=1ni=1n/Tj=(iT)3/T[(iT+1)31]/Tφ(T)
再看括号里面的部分
g ( n , T ) = ∑ i = 1 ⌊ n / T ⌋ ∑ j = ⌊ ( i T ) 3 / T ⌋ ⌊ [ ( i T + 1 ) 3 − 1 ] / T ⌋ = ∑ i = 1 ⌊ n / T ⌋ ( ⌊ ( i T + 1 ) 3 − 1 T ⌋ − ⌊ ( i T ) 3 T ⌋ + 1 ) = ∑ i = 1 ⌊ n / T ⌋ ( ⌊ ( i T + 1 ) 3 − ( i T ) 3 − 1 T ⌋ + 1 ) = ∑ i = 1 ⌊ n / T ⌋ ( 3 i 2 T + 3 i + 1 ) = 3 T ∑ i = 1 ⌊ n / T ⌋ i 2 + 3 ∑ i = 1 ⌊ n / T ⌋ i + ⌊ n / T ⌋ \begin{aligned} g (n, T) & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( \lfloor \frac{ \left( iT + 1 \right) ^ 3 - 1 }{T} \rfloor - \lfloor \frac{ (iT) ^ 3 }{T} \rfloor + 1 \right) \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( \lfloor \frac{ \left( iT + 1 \right) ^ 3 - (iT) ^ 3 - 1 }{T} \rfloor + 1 \right) \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( 3 i ^ 2 T + 3 i + 1 \right) \\ & = 3 T \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } i ^ 2 + 3\displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } i + \lfloor n / T \rfloor \end{aligned} g(n,T)=i=1n/Tj=(iT)3/T[(iT+1)31]/T=i=1n/T(T(iT+1)31T(iT)3+1)=i=1n/T(T(iT+1)3(iT)31+1)=i=1n/T(3i2T+3i+1)=3Ti=1n/Ti2+3i=1n/Ti+n/T
可以预处理前缀和后 O ( 1 ) O(1) O(1)得到
那么 f ( n ) = ∑ T = 1 n g ( n , T ) φ ( T ) f\left( n \right) = \displaystyle\sum_{T = 1} ^ {n} g \left(n, T \right) \varphi(T) f(n)=T=1ng(n,T)φ(T),就可以 O ( n ) O(n) O(n)得到

最后来看原式的后半部分 ∑ j = n 3 N g c d ( n , j ) \displaystyle\sum_{j = n ^ 3} ^ {N} gcd(n, j) j=n3Ngcd(n,j)
∑ i = n 3 N g c d ( n , i ) = ∑ d ∣ n d ∑ i = ⌊ n 3 / d ⌋ ⌊ N / d ⌋ [ g c d ( n d , j ) = 1 ] = ∑ d ∣ n d ∑ i = ⌊ n 3 / d ⌋ ⌊ N / d ⌋ ∑ t ∣ n d , t ∣ i μ ( t ) = ∑ d ∣ n d ∑ t d ∣ n μ ( t ) ( ∑ i = ⌊ n 3 / d t ⌋ ⌊ N / d t ⌋ ) ⇐ T = d t = ∑ T ∣ n ( ∑ i = ⌊ n 3 / T ⌋ ⌊ N / T ⌋ ) ∑ d ∣ T μ ( T d ) d = ∑ T ∣ n ( ∑ i = ⌊ n 3 / T ⌋ ⌊ N / T ⌋ ) φ ( T ) = ∑ T ∣ n ( ⌊ N / T ⌋ − ⌊ n 3 / T ⌋ + 1 ) φ ( T ) \begin{aligned} \displaystyle\sum_{i = n ^ 3} ^ {N} gcd(n, i) & = \displaystyle\sum_{d | n} d \displaystyle\sum_{i = \lfloor n ^ 3 / d \rfloor} ^ { \lfloor N / d \rfloor } \left[ gcd\left( \frac{n}{d}, j \right) = 1 \right] \\ & = \displaystyle\sum_{d | n} d \displaystyle\sum_{i = \lfloor n ^ 3 / d \rfloor} ^ { \lfloor N / d \rfloor } \displaystyle\sum_{ t | \frac{n}{d}, t | i } \mu(t) \\ & = \displaystyle\sum_{d | n} d \displaystyle\sum_{td | n} \mu(t) \left( \displaystyle\sum_{i = \lfloor n ^ 3 / dt \rfloor} ^ { \lfloor N / dt \rfloor } \right) \Leftarrow T = dt \\ & = \displaystyle\sum_{T | n} \left( \displaystyle\sum_{i = \lfloor n ^ 3 / T \rfloor} ^ { \lfloor N / T \rfloor } \right) \displaystyle\sum_{ d | T } \mu(\frac{T}{d}) d \\ & = \displaystyle\sum_{T | n} \left( \displaystyle\sum_{i = \lfloor n ^ 3 / T \rfloor} ^ { \lfloor N / T \rfloor } \right) \varphi(T) \\ & = \displaystyle\sum_{T | n} \left( \lfloor N / T \rfloor - \lfloor n ^ 3 / T \rfloor + 1 \right) \varphi(T) \\ \end{aligned} i=n3Ngcd(n,i)=dndi=n3/dN/d[gcd(dn,j)=1]=dndi=n3/dN/dtdn,tiμ(t)=dndtdnμ(t)i=n3/dtN/dtT=dt=Tni=n3/TN/TdTμ(dT)d=Tni=n3/TN/Tφ(T)=Tn(N/Tn3/T+1)φ(T)
于是我们后半部分可以 O ( n ) O\left(\sqrt n \right) O(n )求得
总体复杂度就是 O ( n ) O\left( n \right) O(n)

AC代码
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值