码迷,mamicode.com
首页 > 其他好文 > 详细

莫比乌斯函数总结

时间:2019-07-23 15:24:54      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:欧拉   交换   str   技巧   例题   前缀和   play   情况   gcd   

莫比乌斯函数总结

性质\(\sum_{d|n}\mu(d)=[n==1]\)
这个可以用组合数的性质来证,形象点的话就是杨辉三角。
因为恒等式:\(\sum_{i=0}^{n}(-1)^nC_{n}^{i}=0\).

莫比乌斯反演:
形式一:
已知:\(g(n)=\sum_{d|n}f(d)\),则有:\(f(n)=\sum_{d|n}\mu(d)g(\frac{n}{d})\).
证明如下:
\[ \sum_{d|n}\mu(d)g(\frac{n}{d})=\sum_{d|n}\mu(d)\sum_{k|\frac{n}{d}}f(k) \]
交换求和次序,有:
\[ \sum_{d|n}\mu(d)\sum_{k|\frac{n}{d}}f(k)=\sum_{k|n}f(k)\sum_{d|\frac{n}{k}}\mu(d)=\sum_{k|n}f(k)[\frac{n}{k}=1]=f(n) \]
故得证.
形式二:
已知:\(g(n)=\sum_{n|d}f(d)\),则有:\(f(n)=\sum_{n|d}\mu(\frac{d}{n})g(d)\).
证明如下:
\(k=\frac{d}{n}\),则有:
\[\sum_{n|d}\mu(\frac{d}{n})g(d)=\sum_{k=1}^{\infty}\mu(k)g(nk)=\sum_{k=1}^{\infty}\mu(k)\sum_{nk|t}f(t)\]
交换求和次序,有:
\[ \sum_{k=1}^{\infty}\mu(k)\sum_{nk|t}f(t)=\sum_{n|t}f(t)\sum_{k|\frac{t}{n}}\mu(k)=\sum_{n|t}f(t)[\frac{t}{n}=1]=f(n) \]
故得证.

常用技巧(应用):
一个性质:
\[ \lfloor\frac{\lfloor\frac{x}{a}\rfloor}{b}\rfloor=\lfloor\frac{x}{ab}\rfloor \]
证明如下:
\(y=\lfloor\frac{x}{a}\rfloor,z=\lfloor\frac{x}{ab}\rfloor\),显然有:\(x=zab+c,c\leq ab\).
等式两边同时除以\(a\)并向下取整有:\(y=zb+\lfloor\frac{c}{a}\rfloor\).
再同时除以\(b\)并向下取整:\(\lfloor\frac{\lfloor\frac{x}{a}\rfloor}{b}\rfloor=z+\lfloor\frac{\lfloor\frac{c}{a}\rfloor}{b}\rfloor\).
之后就比较显然了。

例一:
求:\(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=1]\).
\[ \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=1]=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\mu(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|i,d|j}\mu(d) \]
说明一下:从第一步到第二步多出来一个和式,就相当于一个容斥的过程,考虑所有的\((i,j)\),对于他们的\(gcd\)来进行容斥:先加上所有的情况,然后减去\(gcd\)\(2,3,5...\)倍数的情况,但会多减,所以加回来。
之后再进行变换得:
\[ \sum_{d}\mu(d)\sum_{i=1}^{n}\sum_{d|i}\sum_{j=1}^{m}\sum_{d|j}1=\sum_{d}\mu(d)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor \]
后面的部分直接整除分块,然后预处理\(\mu\)的前缀和就行了。

例二:
求:\(\sum_{i=1}^{n}\sum_{j=1}^{m}gcd(i,j)\)

这个和第一个比较类似,我们变化一下就有:
\[ \sum{d}\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d]=\sum{d}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}[gcd(i,j)=1] \]
根据例一得:
\[ \sum{d}\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}[gcd(i,j)=1]=\sum{d}\sum_t\mu(t)\lfloor\frac{n}{dt}\rfloor\lfloor\frac{m}{dt}\rfloor \]
\(T=dt\),则上式可化为:
\[ =\sum{\frac{T}{t}}\sum_{t}\mu(\frac{T}{d})\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor=\sum_{T}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum_{t|T}\mu(t)\frac{T}{t}=\sum_T\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\varphi(T) \]

说说为什么最后转化为了欧拉函数:
欧拉函数有个十分有用的性质:\(\sum_{d|n}\varphi(d)=n\),证明的话主要从\(f(n)=\sum_{d|n}\varphi(d)\)这个函数为积性函数入手。同时还有一个性质也比较有用:\(\varphi(p^m)=p^m-p^{m-1}\)
有了这个式子反演一下就有:
\[ \varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d} \]
对于例二,整除分块+预处理欧拉函数就行了。

相关例题:
留坑待补

莫比乌斯函数总结

标签:欧拉   交换   str   技巧   例题   前缀和   play   情况   gcd   

原文地址:https://www.cnblogs.com/heyuhhh/p/11231502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!