Luogu

算法

数论分块。

代码

#include <bits/stdc++.h>
#define re register
typedef int mainint;
#define int long long
using namespace std;
mainint main() {
    int n,k; cin>>n>>k;
    int ans=n*k;
    for (re int l=1,r;l<=n;l=r+1) {
        if (k/l) r=min(k/(k/l),n);
        else r=n;
        ans-=(k/l)*(r-l+1)*(l+r)/2;
    }
    cout<<ans<<endl;
    return 0;
}
最后修改:2019 年 05 月 26 日 02 : 27 PM