题解: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;

}
posted @ 2019-10-14 21:49  skkyk  阅读(94)  评论(1编辑  收藏  举报