莫比乌斯反演

来补补初二没学透的坑


引入:

\(\mu (n)\) 为莫比乌斯函数

定义:

  • \(\mu (1)=1\)

  • \(n=\prod^k_{i=1} p_k\) 时,\(\mu (n) = (-1)^k\)

  • 否则 \(\mu (n) = 0\)

重要性质:

  • \[\sum_{d|n} \mu (d)=[n=1] \]

其中 \([n=1]\) 表示当n等于1时,值为1,否则为0

证明:

  • 联想一下组合函数

  • \(n>0\) 时,有

\[\sum_{i=2k+1}^{i<=n} = \sum_{i=2k}^{i<=n},\ k\in N \]

不就搞定了嘛

我们再定义:

\[F(n)=\sum_{d|n} f(d) \]

那么我们可以推得:

\[f(n)=\sum_{d|n} \mu(d)F(\frac{n}{d}) \]


证明:

\[\sum_{d|n} \mu(d)F(\frac{n}{d})\ =\ \sum_{d|n}(\mu(d) \sum_{i|\frac{n}{d}}f(i)) =\ \sum_{i|n}(f(i)\sum_{d|\frac{n}{i}}\mu(d)) \]

根据重要推论,只有当 \(i=n\)\(\sum_{d|\frac{n}{i}}\mu(d)=\mu(1)=1\)

得证。


还有另一种形式:\(F(n)=\sum_{n|d} f(d)\)

就会推得 \(f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)\)

证明:

\[\sum_{n|d}\mu(\frac{d}{n})F(d)=\sum_{n|d}(\mu(\frac{d}{n})\sum_{d|i} f(i)))=\sum_{n|i}(f(i)\sum_{j|\frac{i}{n}}\mu(j))=f(n) \]

得证


例题:

YY的GCD

分析:

根据 \(\sum_{d|n} \mu (d)=[n=1]\)

可得 \(\sum_{d|gcd(i,j)} \mu (d)=[gcd(i,j)=1]\)

题目无非让我们求:

\[\sum_{k\in prime}\sum_i^n\sum_j^m [gcd(i,j)=k] \]

推导一下:(我们这里为了方便,定义 \(n<m\)

\[\sum_{k\in prime}\sum_i^{\lfloor\frac{n}{k}\rfloor}\sum_j^{\lfloor\frac{m}{k}\rfloor} [gcd(i,j)=1] \]

\[\sum_{k\in prime}\sum_i^{\lfloor\frac{n}{k}\rfloor}\sum_j^{\lfloor\frac{m}{k}\rfloor} \sum_{d|gcd(i,j)} \mu (d) \]

\[\sum_{k\in prime}\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)·{\lfloor \frac{n}{kd} \rfloor}·{\lfloor \frac{m}{kd} \rfloor} \]

我们令 \(T=kd\)

\[\sum_{k\in prime}\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)·{\lfloor \frac{n}{T} \rfloor}·{\lfloor \frac{m}{T} \rfloor} \]

枚举T

\[\sum_{T=1}^n{\lfloor \frac{n}{T} \rfloor}{\lfloor \frac{m}{T} \rfloor}\sum_{k\in prime,k|T} \mu(\frac{T}{k}) \]

后面一个sum可以用前缀和优化,前面一个可以用整除分块优化

得证

of course,既然我们是来学习莫比乌斯反演的,就应该用反演好好推一下

我们按套路设 \(f(N)\)\(gcd(i,j)=N\) 的个数,\(F(N)\)\(gcd(i,j)=kN\)的个数

\[f(N)=\sum_{i=1}^n\sum_{j=1}^m\ [gcd(i,j)=N] \]

\[F(N)=\sum_{N|d}f(d)={\lfloor \frac{n}{N} \rfloor}{\lfloor \frac{m}{N} \rfloor} \]

根据反演得:

\[f(N)=\sum_{N|d} \mu (\frac{d}{N}) F(d) \]

针对本题:

\[ans=\sum_{k\in prime}\sum_i^n\sum_j^m [gcd(i,j)=k] \]

\[ans=\sum_{k\in prime}f(k) \]

\[ans=\sum_{k\in prime}\sum_{k|d} \mu (\frac{d}{k}) F(d) \]

\[ans=\sum_{k\in prime}\sum_{k|d} \mu (\frac{d}{k}){\lfloor \frac{n}{d} \rfloor}{\lfloor \frac{m}{d} \rfloor} \]

\[ans=\sum_{k\in prime}\sum_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d){\lfloor \frac{n}{kd} \rfloor}{\lfloor \frac{m}{kd} \rfloor} \]

然后就一样了,是不是很妙

代码


[POI2007]ZAP-Queries

F与f函数的设置和上一题相同

针对本题:

\[ans=\sum_i^n\sum_j^m [gcd(i,j)=N]=f(N) \]

\[ans=\sum_{N|d} \mu (\frac{d}{N}) F(d) \]

\[ans=\sum_{N|d} \mu (\frac{d}{N}){\lfloor \frac{n}{d} \rfloor}{\lfloor \frac{m}{d} \rfloor} \]

\[ans=\sum_{k=1}^{\frac{n}{N}} \mu (k){\lfloor \frac{n}{Nk} \rfloor}{\lfloor \frac{m}{Nk} \rfloor} \]

\(dn=\frac{n}{N}\) , \(dm=\frac{m}{N}\)

怎么好像比上一题还简单(

代码


[SDOI2014]数表

如果我们先不考虑 \(a\) 的限制

显然答案为

\[\sum_{i=1}^n \sum_{j=1}^m \sigma(gcd(i,j)) \]

考虑枚举约数

\[\sum_{N=1}\sigma(N)\sum_{i=1}^n \sum_{j=1}^m [gcd(i,j)=N]) \]

套路一下:

\[f(N)=\sum_{i=1}^n \sum_{j=1}^m [gcd(i,j)=N] \]

\[F(N)=\sum_{N|d}f(d)=\lfloor{\frac{n}{N}}\rfloor \lfloor{\frac{m}{N}}\rfloor \]

\[f(N)=\sum_{N|d}\mu(\frac{d}{N})F(d) \]

所以答案变成:

\[\sum_{N=1}\sigma(N)\sum_{N|d}\mu(\frac{d}{N})\lfloor{\frac{n}{d}}\rfloor \lfloor{\frac{m}{d}}\rfloor \]

因为我们求的是多个因数的和,所以就不像前两题那样转换成枚举倍数

我们直接将 \(d\) 提出来

\[\sum_{d=1}\lfloor{\frac{n}{d}}\rfloor \lfloor{\frac{m}{d}}\rfloor\sum_{N|d}\mu(\frac{d}{N})\sigma(N) \]

没有 \(a\) 的限制,我们就做完了

\(a\) 的限制,我们考虑将询问离线下来,按 \(a\) 排序

我们就每次扩大 \(a\) ,将 \(<=a\)\(\sigma(N)\) 进行贡献

考虑使用树状数组完成,枚举 \(N\) 的倍数,加入到 \(tr[d=kN]\)

记得先将求得的 \(\sigma\) 进行排序,且 \(\sigma(1)=1\)

代码


[SDOI2015]约数个数和

给出贺到的公式:

\[d(ij)=\sum_{x|i}\sum_{y|j} [gcd(x,y)=1] \]

严格证明的话,真就不会了

给一种感性的证明:

考虑一个质因子 \(p_i\)\(i\) 最大为 \(p_i^a\)\(j\) 最大为 \(p_i^b\)\(ij\) 的个数对 \(d(ij)\) 应为 \((a+b+1)\)

等式左边,如果因子从 \(x\) 选,那么 \(y\) 就不能选这个因子(因为要互质),就是 \(a\) 种情况,同理从 \(y\) 选就有 \(b\) 种情况,都不选又是 1 种情况,一共也是 \((a+b+1)\)

行,就当他成立吧(OIer从来都是只记结论的)

答案转换为:

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{y|j} [gcd(x,y)=1] \]

套公式:

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{x|i}\sum_{y|j}\sum_{k|gcd(x,y)} \mu(k) \]

改成枚举 \(x\) , \(y\)

\[\sum_{x=1}^n\sum_{y=1}^m\sum_{i=1}^{\frac{n}{x}}\sum_{j=1}^{\frac{m}{y}} \sum_{k|gcd(x,y)} \mu(k) \]

\(k\) 提出

\[\sum_{k=1}^n \mu(k)\sum_{x=1}^{\frac{n}{k}}\sum_{y=1}^{\frac{m}{k}} \lfloor{\frac{n}{kx}}\rfloor \lfloor{\frac{m}{ky}}\rfloor \]

\(g(n)=\sum_{x=1}\lfloor{\frac{n}{x}}\rfloor\)\(O(n\sqrt{n})\)同样使用数值分块预处理),答案变成:

\[\sum_{k=1}^n \mu(k) g(\lfloor{\frac{n}{k}}\rfloor) g(\lfloor{\frac{m}{k}}\rfloor) \]

再按套路,用数值分块实现


[国家集训队]Crash的数字表格 / JZPTAB

\[\sum_{i=1}^n \sum_{j=1}^m \frac{ij}{gcd(i,j)} \]

\[\sum_{d=1}^n d\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor} ij[gcd(i,j)=1] \]

\[\sum_{d=1}^n d\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor} ij\sum_{k|gcd(i,j)}\mu(k) \]

\[\sum_{d=1}^n d\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\mu(k)k^2\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor} ij \]

\[\sum_{d=1}^n d\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\mu(k)k^2(\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i)(\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor} j) \]

\(g(x)=\sum_{i=1}^x i\)

则原式为:

\[\sum_{d=1}^n d\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\mu(k)k^2 g(\lfloor\frac{n}{kd}\rfloor)g(\lfloor\frac{m}{kd}\rfloor) \]

显然可以用分块套分块来做

posted @ 2022-03-10 13:21  zuytong  阅读(30)  评论(0编辑  收藏  举报