【XSY2495】余数

落花浮王杯 提交于 2019-11-27 05:54:21

Input

Output

Input

3 4

Output

4

HINT

原式
=n*m-n除以i向下取整

用数论分块做就可以了

#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
long long ans;
long long n,m;
int main(){
    scanf("%lld%lld",&n,&m);
    for(register long long i=1,last=0;i<=m;i=last+1)
    {
        long long p=n/i;
        if(p)
        {
            last=min(n/p,m);
        }else{
            last=m;
        }
        ans=(ans+(((last-i+1)%mod*((n%i)%mod+(n%last)%mod))%mod*500000004))%mod;
    }
    printf("%lld",ans);
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!