題目鏈接
https://www.lydsy.com/JudgeOnline/problem.php?id=1257
分析
,則要求 。
套用整除分塊,注意 和 的大小。
AC代碼
#include <cstdio>
#include <algorithm>
using namespace std;
inline int read() {
int num = 0;
char c = getchar();
while (c < '0' || c > '9') c = getchar();
while (c >= '0' && c <= '9')
num = num * 10 + c - '0', c = getchar();
return num;
}
int main() {
int n = read(), k = read();
long long ans = 1ll * n * k;
for (int l = 1, r; l <= n; l = r + 1) {
r = k / l ? min(k / (k / l), n) : n;
ans -= 1ll * (l + r) * (r - l + 1) / 2 * (k / l);
}
printf("%lld", ans);
return 0;
}