51nod-1220-约数之和

题意

[sum _{i=1}^nsum _{j=1}^nd(ij) \ d(x)=sum _{e|x}e ]

(nle 10^9)

分析

没有推出来。这题有几个要点要学习。

第一,推式子要有方向,不能看到什么就动一动,最后搞出来一个算不了的东西。

第二,对于同一个多重和式的不同处理:

[sum _{i=1}^nsum _{j=1}^{lfloorfrac{n}{i} floor}=sum _{j=1}^nsum _{i=1}^{lfloorfrac{n}{j} floor}=sum _{ijle n}=sum _{i=1}^nsum _{j|i} ]

不同的情况可以用不同的处理,不过最后两种在平常的题目中用的比较少,主要是在推杜教筛表达式的时候会经常使用这种方法。

第三,看到可以化开的东西不要急,先把其他东西处理好,变成一个比较漂亮的形式再处理这个。

第四,求和上界的选取。在推式子的过程中,为了化简,可以把求和上界做一些不影响答案的改动,使得它与其他变量无关。比如说

[sum _{i=1}^nsum _{j=1}^{lfloorfrac{n}{i} floor}jlfloorfrac{n}{ij} floor ]

这里既然当 (j>lfloorfrac{n}{i} floor) 的时候后面的值为 0,那不如直接把 (j) 的求和上界改为 (n) ,简化一些条件。

于是就可以开始推这题了。

[egin{aligned} sum _{i=1}^nsum _{j=1}^nsum _{d|ij}d&=sum _{i=1}^nsum _{j=1}^n[frac{d}{gcd(d,i)}|j]d \ &=sum _{i=1}^nsum _{d=1}^{n^2}dlfloorfrac{ngcd (d,i)}{d} floor && (简化d的求和上界)\ &=sum _{e=1}^nsum _{i=1}^{lfloorfrac{n}{e} floor}sum _{d=1}^{lfloorfrac{n^2}{e} floor}delfloorfrac{ne}{de} floor[gcd(i,d)=1] \ &=sum _{e=1}^nesum _{i=1}^{lfloorfrac{n}{e} floor}sum _{d=1}^{n}dlfloorfrac{n}{d} floor[gcd(i,d)=1] && (再次简化d的求和上界) \ &=sum _{i=1}^nsum _{e=1}^{lfloorfrac{n}{i} floor}esum _{d=1}^ndlfloorfrac{n}{d} floor[gcd(d,i)=1] \ &=sum _{a=1}^nmu (a)sum _{i=1}^{lfloorfrac{n}{a} floor}g(lfloorfrac{n}{ai} floor)sum _{d=1}^{lfloorfrac{n}{a} floor}adlfloorfrac{n}{ad} floor end{aligned} ]

(g(n)=sum _{i=1}^nlfloorfrac{n}{i} floor,f(n)=sum _{i=1}^nilfloorfrac{n}{i} floor) ,那么

[ans=sum _{a=1}^namu (a)g(lfloorfrac{n}{a} floor)f(lfloorfrac{n}{a} floor) ]

(O(n^frac{3}{4})) 计算。

原文地址:https://www.cnblogs.com/owenyu/p/7399234.html