from here.
(Description)
求$$sum_{i=1}^nvarphi(i)*i$$
(Solution)
把(f(x)=sum_{i=1}^nvarphi(i)*i)与(g(x)=x)做狄利克雷卷积并求前缀和,会得到:$$sum_{i=1}^nsum_{d|i}f(d)g(frac id)=sum_{i=1}^nsum_{d|i}varphi(d)dfrac id=sum_{i=1}^ni^2$$
再枚举(T=frac id):$$sum_{i=1}^nsum_{d|i}varphi(d)dfrac id=sum_{T=1}^nTsum_{d=1}^{lfloorfrac nT floor}varphi(d)*d=sum_{i=1}^ni^2$$
比如(T=frac id=1)时,满足条件的(d)有(n)个;当(T=frac id=2)时,满足条件的(d)就有(lfloorfrac n2 floor)个,且就是(1simlfloorfrac n2 floor)。
然后移项,左边留着(sum_{i=1}^nvarphi(i)*i):$$sum_{i=1}^nvarphi(i)i=sum_{i=1}^ni^2-sum_{T=2}^nTsum_{d=1}^{lfloorfrac nT floor}varphi(d)d\Rightarrow S(n)=sum_{i=1}^ni^2-sum_{T=2}^nS(frac nT)$$
总结:当遇到一些不好求前缀和的函数时,一般将其与一个易于求前缀和的函数进行狄利克雷卷积,得到另一个易于求前缀和的函数,然后通过简单的数学变换,得到可以递归的式子。
这道题也是这样的思路。