[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;
}