题目大意:求
将取余变为除法
n*k直接计算,k/i至多有2*sqrt(k)种取值,对于每个值将i求和计算。时间复杂度O(sqrt(k))
#include <cstdio>
#include <algorithm>
using namespace std;
long long n,k,ans;
int main() {
scanf("%lld%lld",&n,&k);
long long l=1,r;
while(l<=n && l<=k) {
r=min(n,k/(k/l));
ans+=(l+r)*(r-l+1)*(k/l)/2;
l=r+1;
}
ans=n*k-ans;
printf("%lld\n",ans);
return 0;
}