码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1257 [CQOI2007]余数之和sum

时间:2018-02-20 12:52:14      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:题解   gpo   size   span   ast   std   stream   log   zoj   

题解:a%b=a-[a/b]*b;

ans=n*k-sigma([k/i]*i]);

[k/i]有sqrt(k)种取值

last=k/(k/last);

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long Lint;

int n,m;
Lint ans;
int main(){
	cin>>n>>m;
	ans=1LL*n*m;
	if(m>n){
		int last;
		for(int i=1;i<=n;i=last+1){
			last=min(n,m/(m/i));
			ans=ans-(last-i+1)*1LL*(last+i)*(m/i)/2;
		}
	}else{
		int last;
		for(int i=1;i<=m;i=last+1){
			last=m/(m/i);
			ans=ans-(last-i+1)*1LL*(last+i)*(m/i)/2;
		}
	}
	cout<<ans<<endl;
	return 0;
}

  

 

BZOJ 1257 [CQOI2007]余数之和sum

标签:题解   gpo   size   span   ast   std   stream   log   zoj   

原文地址:https://www.cnblogs.com/zzyer/p/8455002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!