模板——补充
数论分块。
数论分块
求 \(\sum_{i=1}^n \lfloor
n/i\rfloor\),时间复杂度为 \(O(\sqrt
n)\)。
1 2 3 4 5 6 7 8 9 10 11
| long long H(int n) { long long res = 0; int l = 1, r; while (l <= n) { r = n / (n / l); res += 1LL * (r - l + 1) * (n / l); l = r + 1; } return res; }
|