朴素能得个差不多吧……

这题改进算法真恶心

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余数之和的更多相关文章

  1. BZOJ 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 3769  Solved: 1734[Submit][St ...

  2. 【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, ...

  3. 51nod1225 余数之和

    打表可以看出规律.分块求就可以了. #include<cstdio> #include<cstring> #include<cctype> #include< ...

  4. [原博客] 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 ...

  5. bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1779  Solved: 823[Submit][Sta ...

  6. BZOJ 1257: [CQOI2007]余数之和sum( 数论 )

    n >= k 部分对答案的贡献为 k * (n - k) n < k 部分贡献为 ∑ (k - ⌊k / i⌋ * i)  = ∑  , ⌊k / i⌋ 相等的数是连续的一段, 此时这段连 ...

  7. 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2001  Solved: 928[Submit][Sta ...

  8. BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4474  Solved: 2083[Submit][St ...

  9. 51Nod 1225 余数之和 [整除分块]

    1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...

随机推荐

  1. WPF中Expander控件样式,ListBox的样式(带checkbox)恢复

    Expander控件样式: <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButt ...

  2. CC2640-之功耗

    一.测量方式,以DEMO板测量,以消除其它外围不同造成的电流不同. 二.测量结果 以原厂simpleBLEperipheral工程为例 1.如果在低功耗模式下,+5DB发射,最小电流为1.66MA 2 ...

  3. cc2640-各DEMO板性能分析

    一.测试方法: 将4种模块同时上电,测量每个模块达到的最远距离.以稳定能建立通讯为连接上依据.4种板子分析为 1号阿莫DEMO板,2号咱们自己DEMO板,3号嘉源电子DEMO,4号陆程电子DEMO 全 ...

  4. 一、mysql使用入门

    mysql -h localhost -u root -p123456 登录mysql服务器 show databases 列出所拥有的数据库 use www 选择一个www的数据库 show tab ...

  5. 关于count(1) 和 count(*)

    Q:What is the difference between count(1) and count(*) in a sql queryeg.select count(1) from emp; an ...

  6. GIS业务逻辑

    三维怎么加载数据文件? OpenFileDialog frm = new OpenFileDialog(); frm.Filter = "文件数据集|*.tile|多时相数据集|*.Temp ...

  7. iisapp appcmd

    C:\Windows\System32\inetsrv>appcmd list wp

  8. javascript eval 执行过程

    当执行eval时,会执行如下过程 eval(x): 1.如果 x的类型不是string,那么会return x; 2.把x转换成 ecmascript 代码.如果转换失败,责抛出SyntaxError ...

  9. Schtasks 命令详解

    管理计划任务 SCHTASKS /parameter [arguments] 描述:     允许管理员创建.删除.查询.更改.运行和中止本地或远程系统上的计划任务. 参数列表:     /Creat ...

  10. ajax 获取 mysql 保存的图片显示

    function ajax_GetFirstData(data) { var len = data.Data.length; if (len > 0) { $("#jquery_jpl ...