题目大意
给出正整数 和 ,请计算
分析
因为
因此有
后面需要整数分块。
int main() {
ll n = rr();
ll k = rr();
ll sum = n * k;
n = min(n, k);
for (ll l = 1, r; l <= n; l = r + 1) {
r = min(n, k / (k / l));
ll t = (l + r) * (r - l + 1) / 2;
sum -= t * (k / l);
}
printf("%lld", sum);
return 0;
}