关于数论分块里r=sum/(sum/l)的证明!
今天的模拟赛里T2要使用到数论分块,里面有一个重要的坎就是关于r=sum/(sum/l)的证明,网上关于这道题的题解里都没有关于这个的证明,那么我就来填补一下:
在以下的文章里,我都会使用lo(x)表示对x向下取整,同理up(x)表示对x向上取整;
我们要求左右区间的边界,那么我们就不妨设 取两个数 i 和 i‘ 使得lo(N/i')==lo(N/i)则,我们就可以证明
设 lo(N/i)=k;则有 k*i+p=N (p一定有 0<=p<i 成立) 设i’=i+d 则有 lo(N/i+d)=k;则有 k*(i+d)+p'=N;
所以 : p'=N-k*i-k*d ;
因为 p=N-k*i;
so p'=p-k*d;
because k*d=N-k*i-p'=p-p' also because 0<=p<=i
so k*d+p'=p -> d(max)=lo(p/k); (this can make each other !)
because i'=i+d(max)=i+lo(p/k)=i+lo((N%i)/(N/i));
-> i+lo((N-lo(N/i)*i)/lo(N/i));
->lo(i+lo((N-lo(N/i)*i)/lo(N/i)));
->lo((lo(N/i)*i)/lo(N/i)+((N-lo(N/i)*i)/lo(N/i)));
->lo(N/lo(N/i));
证明完毕!!(学校输入法真的难使,我也不想打英文的!)
更加帅气的证明:
设floor(x)表示小于等于x的最大整数,那么若有 floor(N/i)=floor(N/i') ,则i'的最大值为floor(N/floor(N/i));
证明:
我们设 floor(N/i)=k ,显然一定有整数p∈[0,i)满足 k*i+p=N ;
则 p=N-k*i ;
设 d=i-i';
若有整数p'满足 k=floor(N/(i+d)),N=k*(i+d)+p',
那么p'=(N-k*i)-k*d=p-k*d,即 k*d=p'-p;
又∵ p∈[0,i) ∴当d取得最大值dmax时 k*dmax+p'=p,dmax=floor(p/k);
i'=i+dmax
=i+floor(p/k)
=i+floor((N%i)/(N/i))
=i+floor((N-floor(N/i)*i)/floor(N/i))
=floor(i+floor((N-lo(N/i)*i)/floor(N/i)))
=floor((floor(N/i)*i)/floor(N/i)+((N-floor(N/i)*i)/floor(N/i)))
=floor(N/floor(N/i))
即 i'=floor(N/floor(N/i));
得证 。
关于数论分块里r=sum/(sum/l)的证明!的更多相关文章
- [CSP-S模拟测试]:123567(莫比乌斯函数+杜教筛+数论分块)
题目传送门(内部题92) 输入格式 一个整数$n$. 输出格式 一个答案$ans$. 样例 样例输入: 样例输出: 数据范围与提示 对于$20\%$的数据,$n\leqslant 10^6$. 对于$ ...
- 查询数组里有多少个数在[L,R]范围中(二分)
使用两次二分即可得到这个值 比如现在有一个vector<int> vec,里面存放的是有序数列. 我们现在希望找出范围在[L,R]之间的数有多少个. 则有cnt = upper_bound ...
- [CQOI2017]小Q的表格(数论+分块)
题目描述 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理.每当小Q不知道如何解决时,就只好向你求助. 为了完成任务,小Q需要列一个表格,表格有无穷多 ...
- 洛谷P2261 [CQOI2007] 余数求和 [数论分块]
题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod ...
- bzoj 1257 余数之和 —— 数论分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( \sum\limits_{i=1}^{n}k\%i = \sum\limits_ ...
- BZOJ2301/LG2522 「HAOI2011」Problem B 莫比乌斯反演 数论分块
问题描述 BZOJ2301 LG2522 积性函数 若函数 \(f(x)\) 满足对于任意两个最大公约数为 \(1\) 的数 \(m,n\) ,有 \(f(mn)=f(m) \times f(n)\) ...
- [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)
[BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...
- 【数论分块】[BZOJ2956、LuoguP2260] 模积和
十年OI一场空,忘记取模见祖宗 题目: 求$$\sum_{i=1}^{n}\sum_{j=1}^{m} (n \bmod i)(m \bmod i)$$ (其中i,j不相等) 暴力拆式子: $$ANS ...
- LUOGU P2261 [CQOI2007]余数求和(数论分块)
传送门 解题思路 数论分块,首先将 \(k\%a\) 变成 \(k-a*\left\lfloor\dfrac{k}{a}\right\rfloor\)形式,那么\(\sum\limits_{i=1}^ ...
随机推荐
- Xadmin查询
目录 深浅coopy运用 ModelForm的补充 提取模型当中相关属性 getattr和get_field的区别 __ str__,get_field,getattr初识 str ,当用getatt ...
- 落谷P3941 入阵曲
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到 ...
- 项目开发---使用node.js中sass语法
前言:本文中所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. 一.sass插件的安装: gulp-sass-china // ...
- Oracle11g入门
数据类型 数据类型 表示 数字 number 日期时间 date 字符串 char(长度)/varchar2(长度) 约束条件 名称 约束 唯一 unique 非空约束 not null 主键约束 p ...
- angular之跨域
一.什么是跨域? 跨域是指一个域下的文档或者脚本去请求另一个域下的资源.(广义) 广义的跨域: 1.资源跳转:链接跳转.重定向.表单提交. 2.资源嵌入:<link>.<script ...
- Shell多进程执行任务
展示代码 #!/bin/bash trap "exec 1000>&-;exec 1000<&-;exit 0" 2 # 分别为 创建管道文件,文件操作 ...
- Vue项目多域名跨域
在Vue项目中请求后台数据时,遇到的多域名跨域问题. 直接上代码: assetsSubDirectory: "static", assetsPublicPath: "/& ...
- halcon学习方法小结及以后的学习计划
学了这么久的halcon,感觉还是没有摸到门路. 记录一下这么久以来经历过的学习阶段: 看冈萨雷斯<数字图像处理>这本书,使用halcon做练习. 我实际上只比较完整地看了这本书的形态学处 ...
- halcon小结
持更 应用范围 (罗列自官方帮助文档,以后有空了按照需求展开叙述) 1. 安全系统 2. 表面检测 3. 定位 4. 二维测量比较 5. 二维码识别 6. 二维位置定位 7. 二维物体识别 8. 光学 ...
- .NET如何将字符串分隔为字符
.NET如何将字符串分隔为字符 如果这是一道面试题,答案也许非常简单:.ToCharArray(),这基本正确-- 我们以"AB吉