您的位置:首页 > 其它

bzoj 1257: [CQOI2007]余数之和sum

2017-08-11 11:29 225 查看

题目大意:

求∑in k mod i

题解:

只要一步变形∑nik−⌊ki⌋i

直接分块n−−√就可以了。

注意下细节,具体代码。

code:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#define LL long long
using namespace std;
LL sum(int l,int r){return (LL)(r-l+1)*(LL)(l+r)/2;}
int main()
{
int n,k;scanf("%d %d",&n,&k);
LL ans=0;int pos;
for(int i=1;i<=n;i=pos+1)
{
if(k/i==0) pos=n;
else pos=min((k/(k/i)),n);
ans+=(LL)k*(pos-i+1)-(LL)(k/i)*sum(i,pos);
}
printf("%lld",ans);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: