Bzoj 1257 [CQOI2007]余数之和 (整除分块)

题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257

一道简单题.

题目要求:

\[\sum_{i=1}^nx \% i =
\]

\[\sum_{i=1}^nk - i * [\dfrac{k}{i}] =
\]

\[n * k - \sum_{i=1}^n i * [\dfrac{k}{i}]
\]

后面这一部分可以用整除分块解决.

需要注意的是.\(k\%i(i > k)\) 时,运用整除分块,程序会出错,因为除了\(0\),显然\(i>k\)时,不会对答案造成影响.整除分块的时候只需要枚举到\(min(n,k)\)即可.

还需要一点等差数列的知识.

\(l+(l+1)+(l+2)+(l+3)..r\)

这一部分的和就是\((l + r) /2 * (r - l + 1)\)区间的平均值乘以区间元素个数.

然后就做完了.

时间复杂度:\(O(\sqrt n)\)

CODE

#include <iostream>
#include <cstdio>
#define ll long long ll ans,n,k; ll min(ll a,ll b) {return a > b ? b : a;}
ll max(ll a,ll b) {return a > b ? a : b;} int main() {
scanf("%lld%lld",&n,&k);
ans = n * k;
for(ll l = 1,r;l <= min(k,n);l = r + 1) {
r = min( k / (k / l) , n );
ans -= (k / l) * (r - l + 1) * (r + l) / 2;
}
printf("%lld",ans);
return 0;
}

Bzoj 1257 [CQOI2007]余数之和 (整除分块)的更多相关文章

  1. bzoj 1257: [CQOI2007]余数之和 (数学+分块)

    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 ...

  2. bzoj 1257 [CQOI2007]余数之和——数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( n\%i = n - \left \lfloor n/i \right \rfl ...

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

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

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

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

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

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

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

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

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

    1257: [CQOI2007]余数之和 Time Limit: 5 Sec  Memory Limit: 128 MB Description 给出正整数n和k,计算j(n, k)=k mod 1 ...

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

  9. bzoj1257: [CQOI2007]余数之和 整除分块

    题意:给出正整数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)=3 mod ...

随机推荐

  1. python+unittest 搭建简易的接口测试框架

    主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python  unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...

  2. lucene原理及java实现

    https://blog.csdn.net/liuhaiabc/article/details/52346493 https://blog.csdn.net/yang307511977/article ...

  3. 102 Binary Tree Level Order Traversal 二叉树的层次遍历

    给定一个二叉树,返回其按层次遍历的节点值. (即zhu'ceng'de,从左到右访问).例如:给定二叉树: [3,9,20,null,null,15,7],    3   / \  9  20    ...

  4. STM32使用注意事项

    一 IO引脚: 1.1 PC13~PC15作为IO输出的限制,PC13/PC15输出最大2MHZ,负载2PF,驱动电流不超过3mA,所以不能用来驱动LED. 2 输出的引脚是否可以用来读引脚: cas ...

  5. Github开源项目单

    以下涉及到的数据统计与 2019 年 5 月 1 日 12 点,数据来源:https://github.com/trending/java?since=monthly . 下面的内容从 Java 学习 ...

  6. nodejs express 设置html后缀模板

    express 框架的默认渲染模板的后缀是 ejs ,由于编译器在ejs的文件里写html代码没有高亮显示,所以使用html模板. 示例: var app = express(); app.set(' ...

  7. Nginx 开启目录浏览功能配置

    在server节点下添加 server { listen ; server_name default; #index index.php; # 目录浏览功能 autoindex on; # 显示文件大 ...

  8. oracle删除数据库表空间

    步骤一:  删除user drop user ×× cascade 说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的. 步骤二: 删 ...

  9. 用java自带jdk开发第一个java程序

    [学习笔记] 1.用java自带jdk开发第一个java程序:   下面要讲的eclipse要想正常工作,需要先学会配置这里的jdk.jdk要想正常工作,需先学会配置JAVA_HOME和ClassPa ...

  10. CF1079C Playing Piano

    思路: dp. 实现: #include <bits/stdc++.h> using namespace std; ], dp[][]; int main() { int n; while ...