AC代码:
很简单,紫书说的很明白
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long n, k;
long long p_cal(long long k, long long p){
if(p==0) return n;
return min(k/p, n);
}
int main(){
while(~scanf("%d%d", &n, &k)){
long long st=1;
long long sum=0;
while(st<=n){
long long i=st;
long long p=k/st;
long long j=p_cal(k, p);
st=j+1;
//cout<<i <<" "<<j<<" "<<p<<endl;
//cout<<"num = "<<(k*2-i*p-j*p)*(j-i+1)/2<<endl;
sum+=(k*2-i*p-j*p)*(j-i+1)/2;
}
cout<<sum<<endl;
}
return 0;
}