[BZOJ1257][CQOI2007]余数之和sum

BZOJ
Luogu
题意:求\(\sum_{i=1}^{n}k\%i\)

sol

这道题被众多大佬认为是傻逼题(然而我还是WA了一次)

\[k\%i=k-\lfloor\frac ki\rfloor*i \]

还有人不会做吗

\[\sum_{i=1}^{n}k\%i=n*k-\sum_{i=1}^{n}\lfloor\frac ki\rfloor*i \]

还有人不会做吗
后面的直接数论分块一波就过去了啊
复杂度\(O(\sqrt n)\)

code

#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
ll n,k,ans,i=1,j;
int main()
{
	scanf("%lld %lld",&n,&k);
	ans=n*k;
	while (i<=n&&i<=k)
	{
		j=min(n,k/(k/i));//注意这里取min(我就是这里WA的50分)
		ans-=(j+i)*(j-i+1)/2*(k/i);
		i=j+1;
	}
	printf("%lld\n",ans);
	return 0;
}
posted @ 2018-01-09 15:12  租酥雨  阅读(162)  评论(0编辑  收藏  举报