【XSY2495】余数

和自甴很熟 提交于 2020-04-07 13:27:45

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;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!