博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

杜教筛的某道练习题

from here.

\(Description\)

求$$\sum_{i=1}^n\varphi(i)*i$$

\(Solution\)

\(f(x)=\sum_{i=1}^n\varphi(i)*i\)\(g(x)=x\)做狄利克雷卷积并求前缀和,会得到:

\[\sum_{i=1}^n\sum_{d|i}f(d)g(\frac id)=\sum_{i=1}^n\sum_{d|i}\varphi(d)*d*\frac id=\sum_{i=1}^ni^2 \]

再枚举\(T=\frac id\)

\[\sum_{i=1}^n\sum_{d|i}\varphi(d)*d*\frac id=\sum_{T=1}^nT\sum_{d=1}^{\lfloor\frac nT\rfloor}\varphi(d)*d=\sum_{i=1}^ni^2 \]

比如\(T=\frac id=1\)时,满足条件的\(d\)\(n\)个;当\(T=\frac id=2\)时,满足条件的\(d\)就有\(\lfloor\frac n2\rfloor\)个,且就是\(1\sim\lfloor\frac n2\rfloor\)

然后移项,左边留着\(\sum_{i=1}^n\varphi(i)*i\)

\[\sum_{i=1}^n\varphi(i)*i=\sum_{i=1}^ni^2-\sum_{T=2}^nT\sum_{d=1}^{\lfloor\frac nT\rfloor}\varphi(d)*d\\\Rightarrow S(n)=\sum_{i=1}^ni^2-\sum_{T=2}^nS(\frac nT) \]

总结:当遇到一些不好求前缀和的函数时,一般将其与一个易于求前缀和的函数进行狄利克雷卷积,得到另一个易于求前缀和的函数,然后通过简单的数学变换,得到可以递归的式子。

这道题也是这样的思路。

posted @ 2018-12-11 14:16  SovietPower  阅读(384)  评论(0编辑  收藏  举报