莫比乌斯反演
莫比乌斯反演
坑是开了,补不补就另说了(((
1.数论分块
重要结论:
- 对于常数 \(n\),满足\[\lfloor \frac{n}{i}\rfloor=\lfloor \frac{n}{j}\rfloor \]成立的最大的满足 \(i \le j \le n\) 的 \(j\) 的 $\left\lfloor{\frac{n}{\lfloor \frac{n}{i}\rfloor }}\right\rfloor $ 。即块 \(\lfloor\dfrac{n}{i} \rfloor\) 的右端点为 $\left\lfloor{\frac{n}{\lfloor \frac{n}{i}\rfloor }}\right\rfloor $。
证明如下:
证毕。
- \(\forall a,b,c \in Z,\left\lfloor \dfrac{a}{bc}\right\rfloor=\left\lfloor \dfrac{\left\lfloor\dfrac{a}{b}\right\rfloor}{c}\right\rfloor\)
证明略。
复杂度分析:
证明:
当 \(d \le \sqrt n\) 时 \(\lfloor\dfrac{n}{d}\rfloor\) 最多有 \(\sqrt n\) 种取值。
当\(d \ge \sqrt n\) 时 \(\lfloor \frac{n}{d}\rfloor \le \lfloor\sqrt n\rfloor\),\(\lfloor \frac{n}{d} \rfloor\) 最多有 \(\sqrt n\) 种取值。
复杂度\(\mathcal{O(\sqrt n)}\)。
例题:
大板子,每一块求和即可。
int calc(int n)
{
int l=1,r,res=0;
while(l<=n)
{
r=n/(n/l);
res+=(r-l+1)*(n/l);
l=r+1;
}
return res;
}
转化一下也是板子,就是剖开取余问题,因为 \(a \% b\) 等价于 \(a-\left\lfloor \dfrac{a}{b}\right\rfloor \times b\),还是那样。
while(l<=n)
{
if(k/l) r=min(k/(k/l),n);
else r=n;
Ans-=(k/l)*(r-l+1)*(l+r)/2;
l=r+1;
}
2.莫比乌斯函数
定义
\(\mu\) 为莫比乌斯函数,定义如下:
性质
莫比乌斯函数是积性函数,且具有以下性质:
证明,设 \(\displaystyle n=\Pi_{i=1}^{k},n^{'}=\Pi_{i=1}^{k}\)。
①.根据莫比乌斯函数的定义,有\(\displaystyle \sum_{d \mid n} \mu(d)=\sum_{d \mid n^{'}}\mu(d)\)。
②.若 \(n'\) 的某因子 \(d\) ,则有 \(\mu(d)=(-1)^i\),则它由 \(i\) 个本质不同的质因数组成。由于质因数总共 \(k\) 个,所以满足上式的因子数共 \(C_k^i\) 个。
③.对于原式,转化为枚举 \(\mu(d)\) 的值。
则 \(\displaystyle \sum_{d \mid n'}\mu(d)=\sum_{i=0}^{k}{C_k^i}\times (-1)^i=\sum_{i=0}^{k}{C_k^i\times (-1)^i \times 1^{k-i}}\),由二项式定理得该式 \(=(1+(-1))^k\),显然 \(k=0\) 时即 \(n=0\) 时为 \(1\),反之为 \(0\)。
常用结论
无非就是把性质里的式子 \(n\) 换成了 \(\gcd(i,j)\) 而已。
线筛求莫比乌斯函数
利用积性函数的性质筛。
int sc,mu[N],prime[N];
bool vis[N];
void euler(int n)
{
vis[1]=true;mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
prime[++sc]=i;
mu[i]=-1;
}
for(int j=1;j<=sc&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=true;
if(!(i%prime[j]))
{
mu[i*prime[j]]=0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
}
狄利克雷卷积
一些关系
莫比乌斯反演
常用套路
还是那个结论。
一般处理问题中有类似于这样的式子的题目:
发现 \(\gcd(i,j)=Id(\gcd(i,j))\),则式子等价于: