题解:swj社会摇进阶第二课

题目链接

思路:按题目推一点点可以得出答案为

sigma (i-k)*n/i+d(n%i>=k)

#include<bits/stdc++.h>
using namespace std;
const int N = 1e7+10;
const int  mod = 1e9+7;
int n,k;
int main(){ 
	cin>>n>>k;
	int ans=0;
	for(int i=k+1;i<=n;i++) {
		int a=n/i;
		int b=i-k;
		int c=n%i;
		int d=(c-k>=0?c-k+1:0);
		ans+=a*b+d;
		ans%=mod;
	}
	cout<<ans%mod;

}
原文地址:https://www.cnblogs.com/skkyk/p/11674402.html