莫比乌斯反演学习笔记

不管怎么说 这是很正式的学习莫比乌斯反演。

前置 莫比乌斯反演针对于 数论函数 数论函数:定义域为正整数 陪域为复数的一类函数。

考虑两个数论函数 f(x) g(x) 如果有$f(n)=\sum_{d|n}{g(d)}$ 那么存在 $g(n)=\sum_{d|n}{f(\frac{n}{d})\cdot \mu(d)}$

这就是莫比乌斯反演的一般形式...

进行证明一下吧 先讨论一下$\mu$这个有意思的函数 $\mu(n)$的值被定义为 n被质因数分解后某一个质因子的指数>=2那么值为0

设质因子个数为k 否则为$(-1)^k$ 特别的 当n==1时 $\mu(n)=1$

它还有一个比较好的性质当n>1时$\sum_{d|n}{\mu(d)}=0$

关于这个东西的证明 二项式定理显然可以证明出来...

还有一个性质:对于 $n\in N_+$存在$\sum_{d|n}{\frac{\mu(d)}{d}}=\frac{\phi(n)}{n}$

证明也很简单,等式变形 $\sum_{d|n}{\mu(d)\cdot \frac{n}{d}}=\phi(n)$

仔细观察左边 这是一个容斥的过程 容斥完之后刚好等于 $\phi(n)$ 证毕.

额外的我得到了一个有意思的等式$n=\sum_{d|n}{\phi(d)}$

不太会证明 先咕了。

还有一个性质 关于积性函数的,数论上积性函数的定义为:设函数f(n)其中$n\in N_+$对于任意$(x,y)=1$有$f(xy)=f(x)\cdot f(y)$ 则称f(n)是一个积性函数.若对于任意$x,y$都有$f(xy)=f(x)\cdot f(y)$ 则称f(n)是一个完全积性函数.

值得一提的是 $\mu$显然是一个 积性函数,当然积性函数的$\sum$也是一个积性函数.甚至积性函数卷积性函数也是一个积性函数.

又积累了一个积性函数:$f(x)=\sum_{d|x}{d\cdot \mu(d)}$ 采用带入法可以证明其。

且 显见$f(p)=1-p;f(p^k)=f(p)(p\in prime)$ 所以采用线性筛法可以将f函数筛出来.

常见积性函数:$\mu$,$\phi$,$d$叫做约数个数$d(n)=\sum_{d|n}{1}$,$\sigma$叫做约束和函数$\sigma(n)=\sum_{d|n}{d}$

我们惊奇的发现上面的的一个函数是一个$\mu$函数和$\sigma$函数的乘积固仍然是一个积性函数.

完全积性函数:$e(n)$元函数$e(n)=[n=1]$,$I(n)$恒等函数,$I(n)=1$,$id(n)$单位函数,$id(n)=n$;

接下来 跟上我们反演的证明。

前置知识:狄利克雷卷积。

忘了说 刚才上面的$f(x)*\mu(x)$的卷积其实就是两个函数的狄利克雷卷积。

所以其定义为:两个数论函数f和g的卷积为$(f*g)(n)=\sum_{d|n}{f(d)\cdot g(\frac{n}{d})}$这就是狄利克雷卷积了.

显然的是狄利克雷卷积满足以下运算规律:

1.交换律$(f*g=g*f)$

2.结合律$((f*g)*h=f*(g*h))$

3.分配律$((f+g)*h=f*h+g*h)$

值得一提的是我么知道了$\sum_{d|n}{\mu(d)}=[n=1]$表现成迪利克雷卷积中的话就是$\mu *I=e$

这里我们将用到e函数$e(n)=[n=1]$,也是狄利克雷卷积的单位元函数 是不是很显然呢。

因为这显然符合一个函数卷上单位元还等于本身。

此时证明上述反演的正确性.

$g(n)=\sum_{d|n}{f(\frac{n}{d})\cdot \mu(d)}$ $f(n)=\sum_{d|n}{g(d)}$

$\sum_{d|n}{\mu(d)\cdot f(\frac{n}{d})}=\sum_{d|n}{\mu(d)\sum_{k|\frac{n}{d}}{g(k)}}$

更改求和顺序则有 $\sum_{d|n}{\mu(d)\cdot f(\frac{n}{d})}=\sum_{d|n}{g(d)\sum_{k|\frac{n}{d}}{\mu(k)}}$

那么显然了 $\sum_{d|n}{\mu(d)\cdot f(\frac{n}{d})}=\sum_{d|n}{g(d)\cdot [\frac{n}{d}=1]}$

$\sum_{d|n}{\mu(d)\cdot f(\frac{n}{d})}=g(n)$ 证毕.

这只是初步的内容 以后再慢慢添。

[SDOI2017数字表格](https://www.luogu.com.cn/problem/P3704)

原来数论题目也没有那么可怕 那么不可做。

这道题 也很容易推出正解的 可以尝试一下哦.

至今为止我都没用过莫比乌斯反演做过题目。。。

[luogu6156简单题](https://www.luogu.com.cn/problem/P6156)

这道题 挺套路的 我学到了一些知识什么的。

首先是 $i^k$这种形式可以利用线性筛筛出来 只对质数进行快速幂 然后线性筛。由于质数不多 所以可以看出近似logn

然后是 推出式子后能预处理的预处理 千万不要在线搞。就这么多了。 这道题的式子$\sum_{i=1}^n\sum_{i=1}^n(i+j)^kf(gcd(i,j))gcd(i,j)$

其中f为$\mu^2(x),n\leq 5\cdot 10^6$ 话不多说我直接化简了 $\sum_{d=1}^nf(d)d\sum_{x=1}^{\frac{n}{d}}\mu(x)\sum_{i=1}^{\frac{n}{xd}}\sum_{j=1}^{\frac{n}{xd}}(xdi+xdj)^k$

然后枚举T $\sum_{T=1}^nT^k\sum_{x|T}\mu(x)f(\frac{T}{x})\frac{T}{x}\sum_{i=1}^{\frac{n}{T}}\sum_{j=1}^{\frac{n}{T}}(i+j)^k$

我们可以线性筛$i^k$中间那部分我们可以线性筛之后枚举一波因数再搞一个前缀和配合整除分块。

关键是后面那个东西看起来很棘手$(i+j)^k$我们发现这个东西可以$n^2$过于笨拙可以O(n) 过于笨拙 可以O(1)这个还挺优秀...

后面那个真的可以实现O(1)求值所以我们可以在很多不超过O(n)的预处理中最后根号n求值了 这就是这道题的精髓,多次预处理降低复杂度。

好吧想要O(1)求还需要预处理一些值 需要差分一下式子进行O(n)筛出来再求。

当然我们直接暴力求也是可以的 这样复杂度还是nlnn的.

从这道题中还需要学习的是 对于求值的分块求值。

比如说把某一块值 放到一起形成一个函数 g(x)表示那一块的值 就可以使程序清晰明了了。

posted @ 2020-02-06 19:28  chdy  阅读(172)  评论(0编辑  收藏  举报