BZOJ
Luogu
题意:求(sum_{i=1}^{n}k\%i)
sol
这道题被众多大佬认为是傻逼题(然而我还是WA了一次)
[k\%i=k-lfloorfrac ki
floor*i
]
还有人不会做吗
[sum_{i=1}^{n}k\%i=n*k-sum_{i=1}^{n}lfloorfrac ki
floor*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
",ans);
return 0;
}