Live2D

[CQOI2007]余数求和

原题

#include<bits/stdc++.h>
using namespace std;
long long n,k,ans;
int main() {
    scanf("%lld%lld",&n,&k);
    for (register long long l=1,r,t;l<=n;l=r+1) {
        r=(t=k/l) ? min(k/t,n) : n;
        ans-=t*(r-l+1)*(l+r)>>1;
    }
    printf("%lld\n",ans+n*k);
    return 0;
}
posted @ 2020-01-16 16:29  γひん0ΖΖƦ  阅读(136)  评论(0编辑  收藏  举报