/*#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
long long n,m;
int main()
{
freopen("remainders.in","r",stdin);
freopen("remainders.out","w",stdout);
scanf("%lld%lld",&n,&m);
long long sum=0;
int k=n/2;
if (n>=m)
{
if (k>=m) for (int i=2;i<=m;i++) sum+=n%i;
else {
for (int i=2;i<=k;i++) sum=(sum+(n%i))%1000000007;
sum+=(n-m+n-k-1)*(m-k)/2;
}
sum=sum%1000000007;
}
else
{
for (int i=2;i<=k;i++) sum=(sum+(n%i))%1000000007;
sum+=(n-k-1)*(n-k)/2;
sum+=(m-n)*n;
sum=sum%1000000007;
}
printf("%lld",sum);
return 0;%1000000007
}*/
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m,sum,head,tail,t;
ll erfen(ll x,ll y)
{
if (x==y) return x;
ll mid=(x+y)/2+1;
if (ll(n/mid)==t) return erfen(mid,y);
else return erfen(x,mid-1);
}
int main()
{
freopen("remainders.in","r",stdin);
freopen("remainders.out","w",stdout);
scanf("%lld%lld",&n,&m);
head=1;
if (m>n) {sum=(sum+(m-n)*n%1000000007)%1000000007;m=n;}
if (m=n) m--;
while (head<=m)
{
t=ll(n/head);
tail=erfen(head,m);
sum=(sum+(2*n%1000000007-t*(head+tail)%1000000007)*(tail-head+1)/2%1000000007)%1000000007;
head=tail+1;
}
printf("%lld",sum);
return 0;
}
T1
最新推荐文章于 2023-04-21 10:45:06 发布