卧薪尝胆,厚积薄发。
积性函数与莫比乌斯反演
Date: Tue Jul 03 00:52:13 CST 2018
In Category:
总结
积性函数
定义
如果
$n$
,
$m$
,
$gcd(n,m)=1$
,有
$f(n)\times f(m)=f(n\times m)$
如果
$gcd(n,m)\ne 1$
时也有
$f(n)\times f(m)=f(n\times m)$
,则称
$f$
是完全积性的。
性质
- $f(1)=1$
- 设 $n=\prod p_i^{q_i}$ ,则 $f(n)=f(\prod p_i^{q_i})=\prod f(p_i^{q_i})$
若
$f(n)$
完全积性,则
$\prod f(p_i^{q_i})=\prod f(p_i)^{q_i}$
常见积性函数
欧拉函数
$\varphi(n)$
:与
$n$
互质的正整数数目。
$\varphi(n)=n\prod(1-\frac 1 {p_i})$
莫比乌斯函数
$\mu(n)$
:若
$n$
有平方因子,则
$\mu(n)=0$
,否则
$\mu(n)=(-1)^r$
,
$r$
是
$n$
的质因子数目。
$n$
的正因子数目
$d(n)$
除数函数
$\sigma_x(n)$
:
$n$
的所有因子的
$x$
次方之和。
$1$
函数:
$1(n)=1$
(完全积性)
单位函数
$Id(n)=n$
,(完全积性)
狄利克雷卷积单位元函数
$\varepsilon(n)$
:当
$n=1$
时
$\varepsilon(1)=1$
,对于
$n\ne1$
有
$\varepsilon(n)=0$
。
积性函数的积
函数相乘。
乘积: $(f\times g)(n)=f(n)\times g(n)$
狄利克雷卷积: $\begin{align}(f\times g)(n)=\sum_{d|n}f(d)\times g(\frac n d)\end{align}$
狄利克雷卷积的性质:
1、结合律:
$\forall f,g,j\in I\ (f\times g)\times h=f\times (g\times h)$
2、交换律:
$\forall f,g\in I\ f\times g=g\times f$
3、逆元:
$\forall f\in I,\exists f^{-1}\in I\ f\times f^{-1}=\varepsilon$
4、单位元:
$\forall f\in I\ f\times \varepsilon=\varepsilon \times f=f$
5、封闭性:
$\forall f,g\in I\ f\times g \in I$
若
$f,g$
均积性,则他们的两个乘积也积性,若均完全积性,则乘积也完全积性。
乘积满足交换律和结合律。
一些结论
$\mu \times 1=\varepsilon$
当
$n=1$
时显然成立,当
$n\ne1$
时,
$\begin{align}\mu\times 1=\sum_{d|n}\mu(d)\end{align}$
若
$d$
有完全平方因子,则
$\mu(d)=0$
,设约数个数为
$k$
,则有:
$$
\sum_{d | n}\mu(d)=\sum_{i=0}^kC_k^i(-1)^i
$$
根据二项式定理:
$$
(x+y)^k=\sum_{i=0}^kC_k^ix^iy^{k-i}
$$
设
$x=1,y=-1$
得:
$$
(1+(-1))^k=\sum_{i=0}^kC_k^i1^{k-i}(-1)^i=\sum_{i=0}^kC_k^i(-1)^i=0
$$
$\varphi\times 1=Id$
若
$n$
为质数,
$\varphi\times1=\varphi(1)+\varphi(n)=1+(n-1)=n$
若
$n$
不为质数,由积性函数性质得
$\varphi(n)\times1=\Pi\varphi(p_i^{q_i})\times1$
$$
\varphi(p_i^{q_i})\times1=\sum_{k=0}^{q_i}\varphi(p_i^k)=\sum_{k=1}^{q_i}p_i^k(1-\frac 1 {p_i})+1=p_i\times\frac{p_i^{q_i}-1}{p_i-1}\times \frac{p_i-1}{p_i}+1=p_i^{q_i}
$$
所以
$\varphi\times1=Id$
$\varphi(n)=\sum\varepsilon(gcd(i,n))$
欧拉函数定义。
$\mu\times Id=\varphi$
$$
\varphi(n)=\sum_{i=1}^n\varepsilon(gcd(i,n))=\sum_{i=1}^n\sum_{d|gcd(i,n)}\mu(d)=\sum_{i=1}^n\sum_{d|n,d|i}\mu(d)
$$
交换求和号
:
$$
原式=\sum_{d|n}\mu(d)\sum_{d|i}^n 1=\sum_{d|n}\mu(d)\lfloor\frac n d\rfloor
$$
莫比乌斯反演
$f\times1=g\Leftrightarrow g\times\mu=f$
证明
从左到右:
$$
g\times\mu=\sum_{d|n}\mu(d)\times g(\frac n d)=\sum_{d|n}\mu(d)\sum_{d'|\frac n d}f(d')
$$
交换求和号:
$$
原式=\sum_{d'|n}f(d') \sum_{d'|\frac n d}\mu(d)=\sum_{d'|n}f(d')\varepsilon(\frac n {d'})=f(n)
$$
从右到左:
$$
f\times 1=\mu\times g\times 1=\sum_{d|n}(\mu\times g)(d)=\sum_{d|n}\sum_{d'|d}\mu(\frac d{d'})g(d')=\sum_{d'|n}g(d')\sum_{d|n,d'|d}\mu(\frac {d}{d'})
$$
由于
${d|n}\Rightarrow\frac{d}{d'}|\frac{n}{d'}$
,
$$
原式=\sum_{d'|n}g(d')\sum_{d''|\frac{n}{d'}}\mu(d'')=\sum_{d'|n}g(d')\varepsilon(\frac n {d'})
$$
当且仅当
$d'=n$
时
$\varepsilon(\frac n{d'})$
为
$1$
,所以
$f\times 1=g$
解题思路
四个结论: $\mu\times 1=\varepsilon\ \ \varepsilon\times 1=1\ \ \varphi\times 1=Id\ \ Id\times \mu = \varphi$
除法分块:
$\lfloor\frac n d\rfloor$
至多只有
$\sqrt n$
种取值。
一般用于函数求和。
一维除法分块:
for(int l = 1,r;l <= n;l = r + 1)
{
r = n / (n / l);
//do something
}
设
$sum[x]$
为函数
$f(x)$
前缀和,要求
$\sum f(d)g(\lfloor\frac n d\rfloor)g(\lfloor\frac m d\rfloor)$
二维除法分块:
for(int l = 1,r = 0;l <= n;l = r + 1)
{
r = min(n / (n / l),m / (m / l));
ans += (sum[r] - sum[l - 1]) * g[n / l] * g[m / l];
}
大概就是每次在
$n$
和
$m$
里找一个较小的右边界,则左右边界内
$\lfloor\frac n d\rfloor$
(和
$\lfloor\frac m d\rfloor$
)的值相同。
$\frac{i\times j} {gcd(i,j)}=lcm(i,j)$
分块套分块
交换求和号
注意下标的转化。
预处理积性函数值及前缀和
线性筛
$\&$
杜教筛
$\begin{align}d(nm)=\sum[i|n]\sum[j|m][gcd(i,j)==1]\end{align}$
证明:
设
$nm=p_1^{q_1}p_2^{q_2}\cdots p_k^{q_k}\ n=p_1^{x_1}p_2^{x_2}\cdots p_k^{x_k}\ m=p_1^{y_1}p_2^{y_2}\cdots p_k^{y_k}$
。
其中
$x_1+y_1=q_1$
。
每个质因子次数都可以在
$[0,q_i]$
内取值,所以
$d(nm)=\prod(q_i+1)$
。
设
$i=p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k}\ j=p_1^{b_1}p_2^{b_2}\cdots p_k^{b_k}$
要想
$gcd(i,j)==1$
,
$a_i$
或
$b_i$
至少有一个为零,
当
$a_i$
为
$0$
时,
$b_i$
有
$y_i+1$
种取值,当
$b_i$
为
$0$
时,
$a_i$
有
$x_i+1$
种取值,在删掉一个两个都为零的情况被统计了两次,对于一个因子共有
$x_i+1+y_i+1-1=q_i+1$
故:
$$
\sum_{j|m}[gcd(i,j)==1]=\prod (q_i+1)=d(nm)
$$
$[1,n]$ 内与 $n$ 互质的数的和为 $\frac n 2\times \varphi+\varepsilon$
证明:
$$
\begin{align}&\sum_{i=1}^ni\times\varepsilon(gcd(i,n))
=&\sum_{i=1}^ni\sum_{d|gcd(i,n)}\mu(d)\end{align}
$$
交换求和号,得:
$$
\begin{align}&=\sum_{d|n}\mu(d)\sum_{i=1,d|i}^n i\\
&=\sum_{d|n}\mu(d)\sum_{i=1}^{\frac n d} i\times d\\
&=\sum_{d|n}\mu(d)\frac{1+\frac n d}{2}\times \frac n d\times d\\
&=\frac n 2\times((\mu\times Id)(n)+(\mu\times1)(n))\\
&=\frac {n\times \varphi(n)+\varepsilon(n)}2
\end{align}
$$
放缩
一些常用方法:
$$
\sum_{d|n}\sum_{i=1}^{n}\frac n d=\sum_{d|n}\sum_{i=1}^{\frac n d}i
$$
$$
\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]=\sum_{i=1}^{\lfloor\frac n d\rfloor}\sum_{j=1}^{\lfloor\frac m d\rfloor}[gcd(i,j)==1]
$$
枚举
对于求
$lcm$
的题,可以转化为:
$$
\sum_{d|n}\sum_{i=1}^N\sum_{j=1}^M [gcd(i,j)==1]
$$
设一些东西
如果看到了
$\lfloor\frac n{dk}\rfloor$
就设一个
$T=dk$
,再外层枚举
$T$
。
$gcd$ 的处理方法
1、放缩化成
$\varepsilon(gcd(i,j))$
再反演成
$\begin{align}\sum_{k|i,k|j}\mu(k)\end{align}$
2、直接由
$\varphi\times1=id$
化成
$\begin{align}\sum_{k|i,k|j}\varphi(k)\end{align}$
$\begin{align}\sigma_1(n\times m)=\sum[i|n]\sum[j|m]i\times \frac m j[gcd(i,j)==1]\end{align}$
$\begin{align}\sum_{i=1}^ni\times[gcd(i,n)==1]=\frac {n\times \varphi(n)+\varepsilon(n)}2\end{align}$
都代表小于等于
$n$
的数中与
$n$
互质的数的和。
$\lfloor\lfloor n / i\rfloor/j\rfloor=\lfloor n/(ij)\rfloor$
$\begin{align}\sum_{d|n}f(d)\end{align}$ 可以通过枚举 $d$ 的倍数 $nlogn$ 预处理出所有值。
这个操作对于求狄利克雷卷积前
$n$
项时也可以用。
$\begin{align}(f(n)\times g(n))\cdot Id=(f(n)\cdot Id)\times(g(n)\cdot Id))\end{align}$
$\begin{align}\sum_{i=1}^n\sum_{j=1}^m\sigma_0(ij)=\sum_{a=1}^n\sum_{b=1}[\gcd(a,b)=1]\lfloor\frac n a\rfloor\lfloor\frac m b\rfloor\end{align}$
注意
线性筛的时候 $if(i \% prime[j]==0)$ 不要写成 $if(i\%prime[j])$
$\mu(1)=\varphi(1)=1$
除法分块用的是前缀和
为了不出事等所有函数值求完了再求前缀和
除法分块时 $n$ 是较小的那个。
注意做反演题不能一条路走到黑,要及时停下来,这就要求在每一步都观察这个式子是不是已经可做了。
有些时候 $\varphi$ 可以解决一些求和式,达到简化复杂度的作用。
如果求和式是一个比较经典的模型,但是有一小部分很难处理,那大概率是先处理经典的部分,然后再看特殊情况怎么处理。
In tag:
Copyright © 2020
wjh15101051
ღゝ◡╹)ノ♡