#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
inline ll read()
{
ll x = 0, f = 1;
char ch = getchar();
while(ch > '9' || ch < '0')
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
ll n, k, ans;
ll min(ll a, ll b)
{
return a>b?b:a;
}
int main()
{
n = read();
k = read();
ans = n * k;
for(ll l = 1, r = 1; l <= n&& r<=n;l=r+1)
{
r = k/l ? min(k/(k/l), n) : n;
ans -= (ll)((double)(l+r)/2.0*(r-l+1)*(k/l));
}
cout << ans << endl;
return 0;
}
为什么不能除以2.0再转回long long??