莫比乌斯反演&整除分块学习笔记

整除分块

用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数

整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可

若一个商的左边界为l,则右边界为$\lfloor{\frac{n}{\lfloor\frac{n}{l}\rfloor}}\rfloor$

这样时间复杂度就是$O(\sqrt{n})$

如果是类似$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i \ opt \ f(\lfloor{m/i} \rfloor)$

就让r=$min(\lfloor{\frac{n}{\lfloor\frac{n}{l}\rfloor}}\rfloor,\lfloor{\frac{m}{\lfloor\frac{m}{l}\rfloor}}\rfloor)$

这样的话记得另$l<=min(n,m)$,否则会出现除以0的情况

莫比乌斯函数

如果n的因数中没有平方数,则$\mu n=(-1)^k$,k为n质因数的个数

否则$\mu n=0$

特别的,$\mu 1=1$

这样就可以得到一个性质:一个数所有因数的$\mu$之和等于0,除非这个数是1

证明:设m有n个质因数,则原式$=1-C_n^1+C_n^2-C_n^3...C_n^n$

结合二项式定理:原式$=(1-1)^n=0$,证毕

这个性质很常用,比如$[gcd(i,j)]=1$这类式子可以转化成$\sum_{d|gcd(i,j)} \mu(d)$

莫比乌斯反演

若$F(x)=\sum_{d|x} f(x)$

那么$f(x)=\sum_{d|x} F(d)*\mu(x/d)$

但一般而言用的更多的是莫比乌斯函数的性质

上一篇:Java基础练习2(构造方法)


下一篇:sql server 2005 表master..spt_values