【题意】给定n,求Σi=1~nΣj=1~n lcm(i,j),n<=10^10。
【算法】杜教筛
【题解】
$ans=\sum_{i=1}^{n}\sum_{j=1}^{i}lcm(i,j)$
令$g(n)=\sum_{i=1}\frac{n*i}{(n,i)}$,则要求g(n)的前缀和。
$g(n)=n\sum_{d|n}\sum_{i=1}^{n}\frac{i}{d}[(n,i)=d]$
$g(n)=n\sum_{d|n}\sum_{i=1}^{n/d}i[(n/d,i)=1]$
$g(n)=n\sum_{d|n}\frac{d*\varphi(d)+[n=1]}{2}$
$g(n)=n/2*(1+\sum_{d|n}\varphi(d)*d)$
现在只需要求$\sum_{d|n}\varphi(d)*d$的前缀和s(n)。
幂函数和幂函数卷积有奇效。
原文地址:https://www.cnblogs.com/onioncyc/p/8478280.html
时间: 2024-10-12 11:44:50