CQOIX2007余数之和
朴素能得个差不多吧……
这题改进算法真恶心
pascal一直过不了,难道非得转c++?
代码:(pascal)
var n,k,i,l,r,m:longint;
ans:qword;
function ceil(x:real):longint;
begin
if trunc(x)<x then exit(trunc(x)+) else exit(trunc(x));
end;
procedure main;
begin
readln(n,k);
ans:=;
if n>k then
begin
inc(ans,(n-k)*k);
n:=k;
end;
m:=ceil(sqrt(k));
for i:= to m do inc(ans,k mod i);
for i:= to m do
begin
l:=(k div (i+))+;
r:=(k div i);
if l<=m then l:=m+;
if r>n then r:=n;
if r<l then continue;
inc(ans,(((k<<)-i*(l+r))*(r-l+)>>));
end;
writeln(ans);
end;
begin
main;
end.
代码:(c++)
#include <iostream>
#include <cmath>
using namespace std; long long ans,n,k;
int main() {
ios::sync_with_stdio(false);
cin>>n>>k;
if (n>k) {
ans+=k*(n-k);
n=k;
}
long long sqrtk=ceil(sqrt(k));
for (long long i=;i<=sqrtk;++i) ans+=k%i;
for (long long a=;a<=sqrtk;++a) {
long long L=floor(k/(a+))+;
long long R=floor(k/a);
if (L<=sqrtk) L=sqrtk+;
if (R>n) R=n;
if (R<L) continue;
ans+=((k<<)-a*L-a*R)*(R-L+)>>;
}
cout<<ans;
}
另一种分块方法,pascal还是过不了……
#include <cmath>
#include <cstdio>
#include <algorithm> long long n, k, ans;
int main()
{
scanf("%lld%lld", &n, &k);
if (n > k)
{
ans += (n-k)*k;
n = k;
}
ans += n * k;
for (long long i = , last; i <= n; i = last+)
{
last = std::min(n, k/(k/i));
ans -= (k/i) * (i+last) * (last-i+1) / 2;
}
printf("%lld", ans);
}
CQOIX2007余数之和的更多相关文章
- BZOJ 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 3769 Solved: 1734[Submit][St ...
- 【BZOJ1257】【CQOI2007】余数之和sum
Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数.例如j(5, ...
- 51nod1225 余数之和
打表可以看出规律.分块求就可以了. #include<cstdio> #include<cstring> #include<cctype> #include< ...
- [原博客] BZOJ 1257 [CQOI2007] 余数之和
题目链接题意: 给定n,k,求 ∑(k mod i) {1<=i<=n} 其中 n,k<=10^9. 即 k mod 1 + k mod 2 + k mod 3 + … + k mo ...
- bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1779 Solved: 823[Submit][Sta ...
- BZOJ 1257: [CQOI2007]余数之和sum( 数论 )
n >= k 部分对答案的贡献为 k * (n - k) n < k 部分贡献为 ∑ (k - ⌊k / i⌋ * i) = ∑ , ⌊k / i⌋ 相等的数是连续的一段, 此时这段连 ...
- 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 2001 Solved: 928[Submit][Sta ...
- BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 4474 Solved: 2083[Submit][St ...
- 51Nod 1225 余数之和 [整除分块]
1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...
随机推荐
- HttpUnit学习笔记
<!-- htmlUnit --> <dependency> <groupId>net.sourceforge.htmlunit</groupId> & ...
- Thinkphp3.2.2的上传问题
学习了Thinkphp3.2.2的上传,报出了FILE: F:\development\yxk\Cord\Library\Think\Upload.class.php LINE: 257错误 这应该是 ...
- easy ui 下拉级联效果 ,下拉框绑定数据select控件
html代码: ①两个下拉框,一个是省,另一个市 <tr> <td>省:</td> <td> <select id="ProvinceI ...
- python学习笔记8(表达式和语句)
一.print 和 import 信息 >>> print 'age:',22 # 用逗号隔开打印多个表达式 age: 22 import somemodule # 从模块导入函数 ...
- Apache2.2+php5.4在windows上配置实例
这几天一直在win8.1上配置apache+php环境,网上看了很多文章,自己又犯了很多错误才配置成功,对新手来说真是有点小难. 自己打算把配置的详细过程写下来,好帮助其他新手快速配置. 在这里参考了 ...
- Java-使用js进行编码,后台解码。
1:使用js编码 var value=window.encodeURI(window.encodeURI(strValue)); 2:Java类中解码. String str=URLDecoder.d ...
- SSL与TLS的区别以及介绍
转载 :http://kb.cnblogs.com/page/197396/ SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议 ...
- 基于jquery中children()与find()的区别介绍
本篇文章介绍了,基于jquery中children()与find()的区别,需要的朋友参考下 .children(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈).参数可选 ...
- js对象转到字符串
var str = JSON.stringify(obj);
- jquery mobile validation
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...