莫比乌斯反演的一些简单应用#3

前两篇的链接(其实第一篇不看也行,就是一些板子):

莫比乌斯反演的一些简单应用#1

莫比乌斯反演的一些简单应用#2

例6:

求:\(\sum\limits_{i=1}^n\sum\limits_{j=1}^md(i\times j)\)

这里有一个式子:\(d(i\times j)=\sum\limits_{x|i}\sum\limits_{y|j}[\gcd(x,y)=1]\)

很显然,它是成立的,然后就可以将一个陌生的式子转换成我们所熟悉的\(\gcd\)啦。

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

\(=\sum\limits_{x=1}^n\sum\limits_{y=1}^m[\gcd(x,y)=1]\times\lfloor\frac n x\rfloor\times\lfloor\frac m y\rfloor\)

\(=\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=1]\times\lfloor\frac n i\rfloor\times\lfloor\frac m j\rfloor\)

\(=\sum\limits_{d=1}^n\mu(d)\sum\limits_{i=1}^{\lfloor\frac n d\rfloor}\lfloor\frac n{id}\rfloor\sum\limits_{j=1}^{\lfloor\frac m d\rfloor}\lfloor\frac m{jd}\rfloor\)

我们设\(S(n)=\sum\limits_{i=1}^n\lfloor\frac n i\rfloor\)

\(=\sum_{d=1}^n\mu(d)\times S[\lfloor\frac n d\rfloor]\times S[\lfloor\frac m d\rfloor]\)

然后就能做到\(O(\sqrt{n})\)求解每一个问题,\(O(n\times\sqrt{n})\)预处理啦。

例7:

求:\(\sum\limits_{i=1}^n\sum\limits_{j=1}^m\varphi(i\times j)\)

先来推导一个式子:

\(\varphi(i)\times\varphi(j)=i\prod\limits_{P|i}\frac{P-1}Pj\prod\limits_{P|j}\frac{P-1}P\)

\(~~~~~~~~~~~~~~~~~~~~=ij\prod\limits_{P|i}\frac{P-1}P\prod\limits_{P|j}\frac{P-1}P\)

\(~~~~~~~~~~~~~~~~~~~~=ij\prod\limits_{P|i~or~P|j}\frac{P-1}P\prod\limits_{P|i~and~P|j}\frac{P-1}P\)

\(~~~~~~~~~~~~~~~~~~~~=ij\prod\limits_{P|ij}\frac{P-1}P\prod\limits_{P|\gcd(i,j)}\frac{P-1}P\)

\(\therefore\varphi(i)\times\varphi(j)\times\gcd(i,j)=\varphi(\gcd(i,j))\times\varphi(ij)\)

然后我们就可以对式子进行进一步的转换啦:

\(\begin{aligned}&\sum_{i=1}^n\sum_{j=1}^m\frac{\varphi(i)\times \varphi(j)\times\gcd(i,j)}{\varphi(\gcd(i,j))}\\=&\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\varphi(id)\times\varphi(jd)\times[\gcd(i,j)=1]\\=&\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_{k=1}^{\lfloor\frac n d\rfloor}\mu(k)\sum_{i=1}^{\lfloor\frac n{kd}\rfloor}\sum_{j=1}^{\lfloor\frac m{kd}\rfloor}\varphi(ikd)\varphi(jkd)\\=&\sum_{T=1}^n\sum_{d|T}\frac{d}{\varphi(d)}\times\mu(\frac T d)\sum_{i=1}^{\lfloor\frac n T\rfloor}\varphi(iT)\sum_{j=1}^{\lfloor\frac m T\rfloor}\varphi(jT)\end{aligned}\)

我们引进几个函数:

  • \(\begin{aligned}F(n)=\sum_{d|n}\frac{d}{\varphi(d)}\times\mu(\frac T d)\end{aligned}\)

    我们可以在\(O(n\log n)\)的时间得到这个东西。

  • \(\begin{aligned}G(y,x)=\sum_{i=1}^x\varphi(iy)\end{aligned}\)

    我们有递推式:\(G(y,x)=G(y,x-1)+\varphi(xy)\)

    也可以在\(O(n\log n)\)的时间内得到。

  • \(\begin{aligned}S(y,z,x)=\sum_{T=1}^x\sum_{d|T}\frac{d}{\varphi(d)}\times\mu(\frac T d)\sum_{i=1}^{y}\varphi(iT)\sum_{j=1}^{z}\varphi(jT)\end{aligned}\)

    也有递推式:\(S(y,z,x)=S(y,z,x-1)+F(x)\times G(x,y)\times G(x,z)\)

预处理完这三个函数显然是不现实的,内存会炸。

我们设一个上限\(B\)

  • 所有\(\lfloor\frac n d\rfloor\)\(\lfloor\frac m d\rfloor\)小于\(B\)的都预处理,这样就能在\(O(\sqrt{n})\)的时间内求解这一部分。

  • 大于\(B\)时,我们发现\(d<B\),这样的话我们直接爆算即可,能在\(O(\lfloor\frac n B\rfloor)\)的时间内求解。

分析总的时间复杂度为:

\(O(n\log n+n\times B^2+q\times(\sqrt n+\lfloor\frac n B\rfloor))\)

发现当\(B=35\)时取到最值,大功告成!


要期末考了,再加上最近还有一些人打游戏被抓了,所以明天就不让上机房来了。

“莫比乌斯反演的一些简单应用#4”,应该是要搁置许久了,有空再更吧。

猜你喜欢

转载自www.cnblogs.com/WR-Eternity/p/11006008.html