传送门
![ans= \sum (k-i*[k/i])=k*n-\sum i*[k/i] [CQOI2007]余数求和 [整除分块]_c++](https://file.cfanz.cn/uploads/gif/2022/07/12/7/Z51aZYL10L.gif)
考虑整除分块 , 对于一个答案固定的区间 l , r
l为左区间 设值为x=n/l
那么这个区间的贡献就是 ![(\sum i )*x(l<=i<=r) = (l+r)*(r-l+1)/2*x [CQOI2007]余数求和 [整除分块]_#include_02](https://file.cfanz.cn/uploads/gif/2022/07/12/7/c1N8PNJ91N.gif)
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int n,k; LL ans;
int main(){
scanf("%d%d",&n,&k);
ans = (LL)n * k;
for(int l=1,r;l<=n;l=r+1){
if(k/l==0) r=n;
else r = min(k/(k/l),n);
ans -= (LL)(r-l+1) * (k/l) * (l+r)/ 2;
}printf("%lld",ans); return 0;
}
