abc230E Fraction Floor Sum
题面:给定n,计算 $ \sum_{i=1}^{n}\frac{n}{i} $
范围:1<=n<=1E12
思路:分块,假设区间[l,r]的结果都相同,即n/l=n/r,根据l可以推算出r,那么这个区间对结果的贡献就是区间长度乘以结果,时间复杂度为O(sqrtn)。
#include <bits/stdc++.h>
using i64 = long long;
int n, ans;
void solve() {
std::cin >> n;
for (int l = 1, r; l <= n; l = r + 1) {
r = n / (n / l);
ans += (r - l + 1) * (n / l);
}
std::cout << ans << "\n";
}
int main() {
std::cin.tie(0)->sync_with_stdio(0);
int t = 1;
while (t--) solve();
return 0;
}
浙公网安备 33010602011771号