因为接触到了积性函数的线性筛的问题,之前有过类似问题但是不够系统,所以想把遇到过的所有的反演问题的问题记录一下。
问题1:
求 a n s = ∑ a N ∑ b M g c d ( a , b ) ans=\sum_a^N\sum_b^Mgcd(a,b) ans=a∑Nb∑Mgcd(a,b)
这个问题比较经典啦。
设 f ( d ) 为 g c d ( x , y ) 为 d 的 对 数 , F ( d ) 为 d ∣ g c d ( x , y ) 的 对 数 f(d)为gcd(x,y)为d的对数,F(d)为d|gcd(x,y)的对数 f(d)为gcd(x,y)为d的对数,F(d)为d∣gcd(x,y)的对数
所以易知 F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum_{n|d}f(d) F(n)=n∣d∑f(d)
反演得: f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) f(n)=n∣d∑μ(nd)F(d)
那么: a n s = ∑ i i ∑ i ∣ d μ ( d i ) F ( d ) = ∑ d F ( d ) ∑ i ∣ d μ ( d i ) i = ∑ d F ( d ) ∑ i ∣ d μ ( i ) d i ans=\sum_ii\sum_{i|d}\mu(\frac{d}{i})F(d)\\=\sum_{d}F(d)\sum_{i|d}\mu(\frac{d}{i})i\\=\sum_{d}F(d)\sum_{i|d}\mu(i)\frac{d}{i} ans=i∑ii∣d∑μ(id)F(d)=d∑F(d)i∣d∑μ(id)i=d∑F(d)i∣d∑μ(i)id
设 h ( d ) = ∑ i ∣ d μ ( i ) d i h(d)=\sum_{i|d}\mu(i)\frac{d}{i} h(d)=i∣d∑μ(i)id
我可以观察一下这个函数的性质是否满足积性函数的性质。设 p , q p,q p,q为质数.
那么 h ( p ) = p − 1 h(p)=p-1 h(p)=p−1,所以 h ( q ) h ( p ) = ( p − 1 ) ( q − 1 ) h(q)h(p)=(p-1)(q-1) h(q)h(p)=(p−1)(q−1)
因为 h ( p q ) = p q ( 1 − 1 q − 1 p + 1 p q ) = ( p − 1 ) ( q − 1 ) = h ( q ) h ( p ) h(pq)=pq(1-\frac{1}{q}-\frac{1}{p}+\frac{1}{pq})=(p-1)(q-1)=h(q)h(p) h(pq)=pq(1−q1−p1+pq1)=(p−1)(q−1)=h(q)h(p),所以是积性函数。
现在我们看 h ( p k ) h(p^{k}) h(pk)这个函数的表达式。
因为k只要大于1, μ 函 数 都 为 0 \mu函数都为0 μ函数都为0,所以易知 h ( p k ) = p k − p k − 1 h(p^{k})=p^k-p^{k-1} h(pk)=pk−pk−1
我发现这个函数表现的性质和欧拉函数是一样的**!**
也就是说 ϕ ( d ) = ∑ i ∣ d μ ( i ) d i \phi(d)=\sum_{i|d}\mu(i)\frac{d}{i} ϕ(d)=i∣d∑μ(i)id
所以原式为: a n s = ∑ d F ( d ) ϕ ( d ) ans=\sum_{d}F(d)\phi(d) ans=d∑F(d)ϕ(d)
那么问题已经有答案了,现在回过头来看这个关系,可以说是莫比乌斯函数和欧拉函数之间变换的桥梁:
ϕ ( d ) = ∑ i ∣ d μ ( i ) d i = ∑ i ∣ d μ ( d i ) i \phi(d)=\sum_{i|d}\mu(i)\frac{d}{i}=\sum_{i|d}\mu(\frac{d}{i})i ϕ(d)=i∣d∑μ(i)id=i∣d∑μ(id)i
但是我们发现这个就是经过反演后的式子,所以我们应该还可以在还原到没有经过反演过的形式,则有:
n = ∑ d ∣ n ϕ ( d ) n=\sum_{d|n}\phi(d) n=d∣n∑ϕ(d)
那么现在会有一个问题,既然答案没有莫比乌斯函数只有欧拉函数,我们能不能直接用如上的关系式来直接化简?
的确是可以的。
所以: a n s = ∑ a N ∑ b M ∑ d ∣ g c d ( a , b ) ϕ ( d ) = ∑ a N ∑ b M ∑ d ∣ a 且 d ∣ b ϕ ( d ) = ∑ d m i n ( N , M ) ϕ ( d ) N d M d ans=\sum_a^N\sum_b^M\sum_{d|gcd(a,b)}\phi(d)\\=\sum_a^N\sum_b^M\sum_{d|a且d|b}\phi(d)\\ =\sum_d^{min(N,M)}\phi(d)\frac{N}{d}\frac{M}{d} ans=a∑Nb∑Md∣gcd(a,b)∑ϕ(d)=a∑Nb∑Md∣a且d∣b∑ϕ(d)=d∑min(N,M)ϕ(d)dNdM
假如n和m的范围都在 1 0 5 10^5 105这样,且有多组输入,那么就需要分块来加速,这样就需要处理 ϕ ( x ) \phi(x) ϕ(x)的前缀和。
问题2
求 a n s = ∑ a N ∑ b M l c m ( a , b ) ans=\sum_a^N\sum_b^Mlcm(a,b) ans=a∑Nb∑Mlcm(a,b)
问题2看似和问题1相差不大,但是推导异常繁杂,下次再这两个问题之间更新一下简化的问题。
首先: a n s = ∑ a N ∑ b M a b g c d ( a , b ) ans=\sum_a^N\sum_b^M \frac{ab}{gcd(a,b)} ans=a∑Nb∑Mgcd(a,b)ab
这里我们来枚举 d = g c d ( a , b ) d=gcd(a,b) d=gcd(a,b):
a n s = ∑ d m i n ( N , M ) ∑ a N ∑ b M [ g c d ( a , b ) = = d ] a b d = ∑ d m i n ( N , M ) d ∑ a ⌊ N d ⌋ ∑ b ⌊ M d ⌋ [ g c d ( a , b ) = = 1 ] a b ans=\sum_d^{min(N,M)}\sum_a^N\sum_b^M[gcd(a,b)==d]\frac{ab}{d}\\= \sum_d^{min(N,M)}d\sum_a^{\lfloor\frac{N}{d}\rfloor}\sum_b^{\lfloor\frac{M}{d}\rfloor}[gcd(a,b)==1]ab ans=d∑min(N,M)a∑Nb∑M[gcd(a,b)==d]dab=d∑min(N,M)da∑⌊dN⌋b∑⌊dM⌋[gcd(a,b)==1]ab
然后这里引入: ∑ d ∣ n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] d∣n∑μ(d)=[n=1].
所以:
a n s = ∑ d m i n ( N , M ) d ∑ a ⌊ N d ⌋ ∑ b ⌊ M d ⌋ a b ∑ k ∣ g c d ( a , b ) μ ( k ) ans=\sum_d^{min(N,M)}d\sum_a^{\lfloor\frac{N}{d}\rfloor}\sum_b^{\lfloor\frac{M}{d}\rfloor}ab\sum_{k|gcd(a,b)}\mu(k) ans=d∑min(N,M)da∑⌊dN⌋b∑⌊dM⌋abk∣gcd(a,b)∑μ(k)
发现内嵌的三个和式子和第一个问题有相似之处.做同样的处理:
设$ g(x)=1+2+3+…+x$
f ( n , m ) = ∑ a n ∑ b m a b ∑ k ∣ g c d ( a , b ) μ ( k ) f(n,m)=\sum_a^{n}\sum_b^{m}ab\sum_{k|gcd(a,b)}\mu(k) f(n,m)=a∑nb∑mabk∣gcd(a,b)∑μ(k)
f ( n , m ) = ∑ k m i n ( n , m ) μ ( k ) k 2 g ( ⌊ n k ⌋ ) g ( ⌊ m k ⌋ ) f(n,m)=\sum_k^{min(n,m)}\mu(k)k^2g(\lfloor\frac{n}{k}\rfloor)g(\lfloor\frac{m}{k}\rfloor) f(n,m)=k∑min(n,m)μ(k)k2g(⌊kn⌋)g(⌊km⌋)
所以 a n s = ∑ d m i n ( N , M ) d f ( ⌊ N d ⌋ , ⌊ M d ⌋ ) ans=\sum_d^{min(N,M)}df(\lfloor\frac{N}{d}\rfloor,\lfloor\frac{M}{d}\rfloor) ans=d∑min(N,M)df(⌊dN⌋,⌊dM⌋)
因为 ⌊ ⌊ N d ⌋ d ′ ⌋ = ⌊ N d d ′ ⌋ \lfloor\frac{\lfloor\frac{N}{d}\rfloor}{d'}\rfloor=\lfloor\frac{N}{dd'}\rfloor ⌊d′⌊dN⌋⌋=⌊dd′N⌋
所以整合到原式
a n s = ∑ d m i n ( N , M ) d ∑ k m i n ( ⌊ N d ⌋ , ⌊ M d ⌋ ) μ ( k ) k 2 g ( ⌊ N k d ⌋ ) g ( ⌊ M k d ⌋ ) ans=\sum_d^{min(N,M)}d\sum_k^{min(\lfloor\frac{N}{d}\rfloor,\lfloor\frac{M}{d}\rfloor)}\mu(k)k^2g(\lfloor\frac{N}{kd}\rfloor)g(\lfloor\frac{M}{kd}\rfloor) ans=d∑min(N,M)dk∑min(⌊dN⌋,⌊dM⌋)μ(k)k2g(⌊kdN⌋)g(⌊kdM⌋)
设 h ( x ) = g ( ⌊ N x ⌋ ) g ( ⌊ M x ⌋ ) h(x)=g(\lfloor\frac{N}{x}\rfloor)g(\lfloor\frac{M}{x}\rfloor) h(x)=g(⌊xN⌋)g(⌊xM⌋)
a n s = ∑ d d ∑ k μ ( k ) k 2 h ( k d ) ans=\sum_dd\sum_k\mu(k)k^2h(kd) ans=d∑dk∑μ(k)k2h(kd)
设 t = k d t=kd t=kd
a n s = ∑ t h ( t ) ∑ k ∣ t μ ( k ) k 2 t k = ∑ t h ( t ) t ∑ k ∣ t μ ( k ) k ans=\sum_th(t)\sum_{k|t}\mu(k)k^2\frac{t}{k}\\= \sum_th(t)t\sum_{k|t}\mu(k)k ans=t∑h(t)k∣t∑μ(k)k2kt=t∑h(t)tk∣t∑μ(k)k
设 l ( n ) = ∑ k ∣ n μ ( k ) k l(n)=\sum_{k|n}\mu(k)k l(n)=k∣n∑μ(k)k
易知 l ( n ) l(n) l(n)是个积性函数,用欧拉筛线性处理即可。