反演 1
数论分块
考虑一个反比例函数\(y=\frac{n}{x}\)
对于这个函数向下取整,得到这个函数\(y=\lfloor \frac{n}{x} \rfloor\)
这个函数值相同的部分肯定是连续段
通过数论分块可以快速求出左右端点,进而快速求区间和
时间复杂度\(O(\sqrt{n})\)
莫比乌斯反演
\([n=1]=\sum\limits_{d|n}\mu(d)\)
证明:
\(n=1,\sum\limits_{d|n}\mu(d)=\mu(1)=1\)
\(n>1,\)考虑将\(n\)分解质因数,
考虑到如果一个质因数的指数大于\(1\)那这个数的\(\mu=0\),事实上没有对求和产生贡献
所以现在变成了选偶数个质因数的数的个数减去选奇数个质因数相乘的数的个数
那么根据二项式定理的推论,结果就显然是\(0\)了
反演的形式是这个:
\(f_n=\sum\limits_{d|n} g_{d}\to g_n=\sum\limits_{d|n} f_{d}* \mu(\frac{n}{d})\)
莫比乌斯反演的套路
\(1.[gcd(i,j)=1] =\sum\limits_ {d|gcd(i,j)} \mu(d)\)
$2.\sum\limits^{n}_ {i=1} \sum\limits ^{m}_ {j=1} [gcd(i,j)=1] $
$=\sum\limits^{n}_ {i=1} \sum\limits ^{m}_ {j=1} \sum\limits_ {d|gcd(i,j)} \mu(d) $
$=\sum\mu(d) \lfloor \frac{n}{d} \rfloor \lfloor \frac{m}{d} \rfloor $
\(3.\)上述常见形式进一步的话可以再套一个\(\sum\)
如果还能有进一个\(\sum\),考虑这个形式
\(\sum \lfloor \frac{n}{dx} \rfloor \lfloor \frac{m}{dx} \rfloor \sum \mu(x)A(d)\)
\(A(x)\)是一个数论函数,进一步考虑筛法求值
\(3.5\)
化成上述形式以后再考虑筛法问题
考虑的方向就是换元搞狄利克雷卷积
把后边整成一个积性函数
然后套线性筛杜教筛啥的快速求一个前缀和
最后上数论分块做到线性或低于线性即可
\(4.\)筛\(\sum\limits_{x|d}\mu(x)\)的筛法
for(int i=2;i<N;++i) {
if(!flg[i]) p[++tot]=i,mu[i]=-1,f[i]=1;
for(int j=1;j<=tot&&i*p[j]<N;++j) {
int x=i*p[j];
flg[x]=1;
if(i%p[j]==0) {
f[x]=mu[i];
mu[x]=0;
break;
} else {
f[x]=-f[i]+mu[i];
mu[x]=-mu[i];
}
}
f[i]+=f[i-1];
}
\(5.\)考虑筛积性函数
如果用线筛考虑套线筛板子推怎么线筛
(记所有质数的集合为\(prime\),\(prime_j\)表示第\(j\)大质数)
考虑线筛板子一共是\(3\)个部分
\(5.1\space i\in prime\)
\(5.2\space i\not \in prime\)
\(5.2.1\space prime_j|i\)
\(5.2.2\space prime_j\not | i\)
然后就是前缀和