分析:
x mod y 可以表示为 x-[x/y]*y 。
按照这个将原式变形就可以数论分块搞了。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
LL n,k;
int main(){
scanf("%lld%lld",&n,&k);
LL ans=n*k,nxti;
for(LL i=1;i<=min(n,k);i=nxti){
nxti=k/(k/i)+1;
if(nxti>n) nxti=n+1;
ans-=(k/i)*(i+nxti-1)*(nxti-i)/2;
}
printf("%lld\n",ans);
return 0;
}