Processing math: 100%
  1. 1 Refrain Anan Ryoko
  2. 2 镇命歌 -しずめうた- 瀧沢一留
  3. 3 Pure SCHAT10(影)
  4. 4 Lemon Soda NGC 3.14/Tenkitsune
  5. 5 summer vibe Cyan Lpegd
  6. 6 DJ Okawari - Flower Dance(钢琴原版) Oturans
  7. 7 花降らし n-buna/初音ミク
  8. 8 Lemon 米津玄師
  9. 9 明けない夜、醒めない夢 Yunomi
  10. 10 ニゲラの花束 鎖那
  11. 11 ひだまりの郷 八乙女葦菜
  12. 12 Pneumatic Tokyo EnV
  13. 13 摘星座的女孩 Rainbowets
Refrain - Anan Ryoko
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

51nod 1238 最小公倍数之和 V3 题解

题意简述

ni=1nj=1lcm(i,j)

n1010 (简短题意,恶臭规模)

思路

总的来说,就是先把式子变一变,然后巧妙的用欧拉函数 φ 加上杜教筛和整除分块来算。

变形

首先我们知道 lcm(a,b)=lcm(b,a)

所以,当 ij 时候,我们计算 j<i 的情况,然后 ×2 即可

对于 i=j 的情况特判,这时候产生的贡献和为 n(n+1)2

所以,答案化为

ni=1i1j=1lcm(i,j)+n(n+1)2

我们都知道 lcm(i,j)=ijgcd(i,j)。这个再换一下即可。

开始硬♂上

开局一公式,结论全靠推。让我们开心的推倒式子吧~

首先枚举 gcd,然后枚举互质的倍数 i,j

原式

=nd=1n/di=1ij=1[gcd(i,j)=1]ijd
=ni=1ij=1[gcd(i,j)=1]ijn/id=1d (枚举一对互质的 i,j ,计算有多少个 d 算到了这对 i,j,加起来)
Sk(n)=ni=1ik 。显然, k=1,2,3 时这个式子都能 O(1) 算。
接下来变成
=ni=1ij=1[gcd(i,j)=1]ijS1(n/i) (恭喜你少了一个 d
考虑如何求 ij=1[gcd(i,j)=1]j,也就是求 i 以内和 i 互质的数的和。

点击

它等于 12i×φ(i)。带入原式:

=ni=1i×S1(n/i)×i×φ(i)2 (恭喜你又少了一个 j,它现在是一维了)
=12ni=1i2φ(i)×S1(n/i)

S1(n/i) 显然可以整除分块,但是整除分块我们要考虑一个东西: 如何求 i2φ(i) 的前缀和?显然,用杜教筛求一下和即可。

点击

总复杂度非常恐怖,但是的确能通过 n=1010 的数据。一定注意处处取膜

代码

点击
w