知识:莫比乌斯反演
定义
设\(p_i\)为n的质因数,m为\(p_i\)的个数
\(\mu(1)=1\)
\(\mu(n)=\prod_{i=1}^{m}\mu(p_i^{a_i})=\begin{cases} (-1)^m 当a_1==a_2···==a_n==1 \\0 其他情况\end{cases}\)
定理
当\(F(n)和f(n)\)满足\(F(n)=\sum_{d|n}f(d)\)
则有\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)
也可写成\(f(n)=\sum_{d|n}\mu(\frac{n}{d})*F(d)\)
这不废话?
证明
\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)
\(\because F(n)=\sum_{d|n}f(d)\)
\(\therefore f(n)=\sum_{d|n}\mu(d)*\sum_{k|\frac{n}{d}}f(k)\)
\(\therefore f(n)=\sum_{k|n}f(k)*\sum_{d|\frac{n}{k}}\mu(d)\)
其中,莫比乌斯函数满足性质:
\(\sum_{d|n}\mu(d)=\begin{cases} 1 当n==1\\0当n\neq1\end{cases}\)
(性质在下文证)
因此,只有当\(\frac{n}{k}==1即n==k\)
\(\sum_{d|\frac{n}{k}}\mu(d)=1\)
所以
\(f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\)
因为\(\mu\)本身就是一个容斥,也许可以考虑推容斥系数来证明?
性质
性质1
\(\sum_{d|n}\mu(d)=\begin{cases} 1 当n==1\\0当n\neq1\end{cases}\)
看上去就是一个非常优美的结构
可以分类讨论一下,
当\(n==1\)的时候,这个性质显然成立
当\(n\neq 1\)的时候,
将\(n\)进行质因数分解,设\(n=\prod _{i=1}^kp_i^{a_i}\)
那么\(d\)实际上就是在选择\(a_i\)的值,根据\(\mu\)的定义,显然,如果选择的\(a_i>1\)那么\(\mu (d)=0\),故只需要考虑\(a_i=1或0\)的情况,也就是可以看成选或者不选
那么就有\(\sum_{d|n}\mu (d)=\sum_{i=0}^{k}C_k^i(-1)^i\)
这很显然就是一个二项式反演的结构,故值为\(0\)
性质2
\(\mu (n)\)为一个积性函数,即当\(gcd(x,y)=1\),那么有\(\mu(xy)=\mu (x)\mu (y)\)
这性质应该比较显然吧,从定义出发就可以了
性质3
\(F(n)=\sum_{n|d}f(d)\)
\(f(n)=\sum_{n|d}\mu (\frac{d}{n})F(d)\)
需要注意的是,这里的\(d\)不管有没有上限都是成立的
证明方法就跟原本形式的\(\mu\)一样
小技巧
常常会遇到如下式子\(\sum_{i=1}^n \lfloor\frac{n}{i}\rfloor\),
此时肯定不能\(O(n)\)进行处理,可以发现,对于一块之内,\(\lfloor\frac{n}{i}\rfloor\)是一样的
通过理(da)性(biao)证(gui)明(lv),可以发现,每一个块的最后一个的\(i\)一定是\(\lfloor\frac{n}{\lfloor\frac{n}{x}\rfloor}\rfloor\),这里的\(x\)表示一个块中的任意一个\(i\),时间复杂度便成为了\(O(\sqrt n)\)
可以考虑如果是有\(k\)个\(\sum\)套在一起,那么时间复杂度则是\(O(k\sqrt n)\),你可以理解为对于每一个单独的\(\sum\),我们将其每一个块的最后一个值在数轴上进行标记,那么时间复杂度取决于数轴上标记的数的个数,故为\(O(k\sqrt n)\)

浙公网安备 33010602011771号