莫比乌斯变换轻松上手

莫比乌斯变换轻松上手

写了几道莫比乌斯反演的题,不太会反演的套路,反而感觉直接莫比乌斯变换会更容易上手一点...

(参考资料:《数论基础》潘承洞 著)

一些函数

  • 莫比乌斯函数:\[\mu(n)= \begin{cases} 1& n=1\\(-1)^s& n=p_1\cdots p_s\\ 0& 其他 \end{cases}\] 即含平方素因子的数函数值为0,1的函数值是1
  • 卷积单位元:\[I(n)=[n==1]\]
  • 乘法单位元:\(u(n)\equiv1\)
  • 恒等函数:\(e(n)=n\)
  • 欧拉函数:\(\varphi(n)=\sum\limits_{i=1}^n[(i,n)==1]\) ,从1~n与n互质的数的个数。

Dirichlet乘积

类似于加减乘除,卷积是一种运算,熟悉它的用法即可。

如果\(f(n)\)\(g(n)\) 是两个数论函数,则

\[h(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d})\]

称为\(f(n)\)\(g(n)\)\(Dirchlet\)乘积(卷积)。

//一般写成是:\(h=f*g\)

这个运算,它满足交换律结合律

  • 交换律:\(f*g=g*f\)
  • 结合律:\((f*g)*h=f*(g*h)\)

证明是利用卷积的另一种形式:\((f*g)(n)=\sum\limits_{ab=n}f(a)g(b)\)

  • 交换律是显然的
  • 结合律:\[(f*(g*h))(n)=\sum\limits_{ad=n}f(a)(g*h)(d)=\sum\limits_{ad=n}f(a)\sum\limits_{bc=d}g(b)h(c)=\sum\limits_{abc=n}f(a)g(b)h(c)=((f*g)*h)(n)\]

有用的结论

  • \(I=\mu *u\),即\(I(n)=\sum\limits_{d|n}\mu(d)=\begin{cases}1 & n=1\\0& n≠1\end{cases}\)

  • \(n=1\),显然
  • \(n=p_1^{\alpha_1}\cdots p_1^{\alpha_1}\)\(\sum\limits_{d|n}=1+C_s^1(-1)+C_s^2(-1)^2+\cdots+C_s^s(-1)^s=(1-1)^n=0\)

基于上述的结论,看见类似\([\gcd(x,y)==1]\) 就能给它代入这个式子了

莫比乌斯变换

\(F=f*u\)\(F\) 称为 \(f\) 的 Möbius 变换

亦即 \[F(n)=\sum\limits_{d|n}f(d)\]

顺便补一下反演,就是反变换,就是用\(f\) 表示 \(F\)

  • \(F=f*u\),则\(f=F*\mu\)

两边同时卷一下\(\mu\)\(F*\mu=f*u*\mu=f*I=f\)

// 这也是\(I\) 被称作卷积单位元的原因

  • 熟悉的表达:如果\(F(n)=\sum\limits_{d|n}f(d)\),那么\(f(n)=\sum\limits_{d|n}\mu(d)\)

基本操作

  1. 更换求和号的枚举,比如说,\(\sum\limits_{i=1}^n\sum\limits_{d|i}1=\sum\limits _{d=1}^n\lfloor\frac{n}{d}\rfloor\)
  2. 改变和式枚举的方式,像,\(\sum\limits_{x=1}^m\sum\limits_{y=1}^n[\gcd(x,y)==k]=\sum\limits_{x=1}^{m/k}\sum\limits_{y=1}^{n/k}[\gcd(x,y)==1]\)
  3. 对公因数枚举,如,\(\sum\limits_{x=1}^{m/k}\sum\limits_{y=1}^{n/k}[\gcd(x,y)==1]=\sum\limits_{x=1}^{m/k}\sum\limits_{y=1}^{n/k}\sum\limits_{d=1}^{\min(m/k,n/k)}[d|\gcd(x,y)]\)
  4. 公因数的因子就是两个数的公因子
  5. \([d|\gcd(x,y)]=[d|x][d|y]\)
  6. 还有公式:\(d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)==1]\)

做过的题

猜你喜欢

转载自www.cnblogs.com/tongseli/p/11686558.html
今日推荐