tioj 1556 . Weep
- problem link
-
給定一正整數\(N\),求符合\(A \lt B \le N\) 且 \(A | B\)的正整數數對\( (A,B) \)的個數。\( (N \le 10^{14}) \)
- 問題等價於求\( \sum_{i=1}^N { (\lfloor \frac N i \rfloor - 1) } \) ,直接\( O(N) \)算肯定會 TLE。
- \( \sum_{i=1}^N { \lfloor \frac N i \rfloor} \) 等於滿足 \( i \le N, j \le N, ij \le N \) 的正整數數對 \( (i, j) \) 的數量。
- 令\( u = \lfloor \sqrt N \rfloor \), \((i,j)\) 數對可分成三類
- \(i \le u, j \le u\)
- \(i \le u, j \gt u\)
- \(i \gt u, j \le u\)
- 顯然
- 第 \(1\) 類的數量等於 \(u^2\),因為任兩個不大於 \(u\) 的數相乘都不會大於 \(N\)
- 第 \(2\) 類的數量與第 \(3\) 類相等(對稱)
- 第 \(1\) 類加第 \(2\) 類的數量等於 \( \sum_{i=1}^u {\lfloor \frac N i \rfloor} \)
- 於是乎排容一下可得到
- 可以用 \( O(\sqrt N) \) 計算了,yay
- 詳情請看維基百科 Divisor summatory function - Wikipedia (?