题解 P3911 【最小公倍数之和】

starseven

2020-08-25 15:48:55

Solution

$$ ans=\sum_{i=1}^n\sum_{j=1}^nlcm(A_i,A_j) $$ $$ \begin{aligned} ans & =\sum_{i=1}^n\sum_{j=1}^nlcm(A_i,A_j) \\ & =\sum_{i=1}^n\sum_{j=1}^n\frac{A_i\cdot A_j}{gcd(A_i,A_j)} \\ & =\sum_{i=1}^n\sum_{j=1}^nA_i\cdot A_j\sum_{t=1}^{A_i}\frac{1}{t}[gcd(A_i,A_j)=t] \\ & =\sum_{t=1}^{A_m}\frac{1}{t}\sum_{i=1}^n\sum_{j=1}^nA_i\cdot A_j[gcd(A_i,A_j)=t] \\ & =\sum_{t=1}^{A_m}t\sum_{i=1}^n\sum_{j=1}^n[A_i mod\; t=0][A_j mod\;t=0]\cdot \frac{A_i\cdot A_j}{t^2}[gcd(A_i/t,A_j/t)=1] \\ & =\sum_{t=1}^{A_m}t\sum_{i=1}^n\sum_{j=1}^n[A_i mod\; t=0][A_j mod\;t=0]\cdot \frac{A_i\cdot A_j}{t^2}\sum_{d|gcd(A_i/t,A_j/t)}\mu(d) \end{aligned} $$ ----------------------- 打住,我们这些式子始终都在数组上进行,根本没有脱离数组,这导致我们根本没法进行数论变换 所以我们需要把数组转化到数上去 ------------------- $$ 1\leq N \leq 50000 $$ $$ 1\leq A_i \leq 50000 $$ 我们就可以根据这个式子 $$ \sum_{i=1}^{n}\sum_{j=1}^nlcm(i,j) $$ 我们想想怎么加一个限制才能使答案不重不漏 数量! 我们记录一个数字x在数列中出现了多少次,记为数组c 所以我们现在要求的是 $$ \begin{aligned} ans= & \sum_{i=1}^n\sum_{j=1}^n lcm(i,j)\times c_i \times c_j\\ =& \sum_{i=1}^n\sum_{j=1}^n \frac{i \times j\times c_i \times c_j}{\gcd(i,j)} \\ =& \sum_{d=1}^n\sum_{i=1}^{\lfloor n/d \rfloor}\sum_{j=1}^{\lfloor n/d \rfloor}[\gcd(i,j)=1]d\times i \times j \times c_{id} \times c_{jd} \\ =& \sum_{d=1}^n\sum_{i=1}^{\lfloor n/d \rfloor}\sum_{j=1}^{\lfloor n/d \rfloor}\sum_{k|\gcd(i,j)}\mu(k) \times d\times i \times j \times c_{id} \times c_{jd} \\ =& \sum_{d=1}^n\sum_{k=1}^{\lfloor n/d\rfloor}\sum_{i=1}^{\lfloor n/kd\rfloor}\sum_{j=1}^{\lfloor n/kd\rfloor}\mu(k)\times d \times i \times j \times k^2 \times c_{idk} \times c_{jdk} \\ =& \sum_{T=1}^{n}T\times(\sum_{i=1}^{\lfloor n/T \rfloor}i\times c_{iT})^2\sum_{k|T}\mu(k)\times k \end{aligned} $$ 那么我们前面的可以进行预处理 时间复杂度 $$ O(n\cdot ln(n)) $$