今天的模拟赛里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)的证明!的更多相关文章

  1. [CSP-S模拟测试]:123567(莫比乌斯函数+杜教筛+数论分块)

    题目传送门(内部题92) 输入格式 一个整数$n$. 输出格式 一个答案$ans$. 样例 样例输入: 样例输出: 数据范围与提示 对于$20\%$的数据,$n\leqslant 10^6$. 对于$ ...

  2. 查询数组里有多少个数在[L,R]范围中(二分)

    使用两次二分即可得到这个值 比如现在有一个vector<int> vec,里面存放的是有序数列. 我们现在希望找出范围在[L,R]之间的数有多少个. 则有cnt = upper_bound ...

  3. [CQOI2017]小Q的表格(数论+分块)

    题目描述 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理.每当小Q不知道如何解决时,就只好向你求助. 为了完成任务,小Q需要列一个表格,表格有无穷多 ...

  4. 洛谷P2261 [CQOI2007] 余数求和 [数论分块]

    题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod ...

  5. bzoj 1257 余数之和 —— 数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( \sum\limits_{i=1}^{n}k\%i = \sum\limits_ ...

  6. BZOJ2301/LG2522 「HAOI2011」Problem B 莫比乌斯反演 数论分块

    问题描述 BZOJ2301 LG2522 积性函数 若函数 \(f(x)\) 满足对于任意两个最大公约数为 \(1\) 的数 \(m,n\) ,有 \(f(mn)=f(m) \times f(n)\) ...

  7. [BZOI 3994] [SDOI2015]约数个数和(莫比乌斯反演+数论分块)

    [BZOI 3994] [SDOI2015]约数个数和 题面 设d(x)为x的约数个数,给定N.M,求\(\sum _{i=1}^n \sum_{i=1}^m d(i \times j)\) T组询问 ...

  8. 【数论分块】[BZOJ2956、LuoguP2260] 模积和

    十年OI一场空,忘记取模见祖宗 题目: 求$$\sum_{i=1}^{n}\sum_{j=1}^{m} (n \bmod i)(m \bmod i)$$ (其中i,j不相等) 暴力拆式子: $$ANS ...

  9. LUOGU P2261 [CQOI2007]余数求和(数论分块)

    传送门 解题思路 数论分块,首先将 \(k\%a\) 变成 \(k-a*\left\lfloor\dfrac{k}{a}\right\rfloor\)形式,那么\(\sum\limits_{i=1}^ ...

随机推荐

  1. MYSQL SQL语句 之 select

    select语句在数据库操作中是操作频率最高的语句,使用方式也是多种多样,它的基本功能是:从表中选取数据,结果存储在一个结果集中.可以联合where,and,or,Order By,distinct, ...

  2. 【从刷面试题到构建知识体系】Java底层-synchronized锁-1

    在技术论坛中,经常看到一种言论:面试造火箭,干活拧螺丝.我们平时写的大部分代码的确是CRDU,再提一个层次,也无非就是揉进去复杂一些的业务逻辑,把一堆的CRDU组合起来. 那么问题来了:我们提倡的研究 ...

  3. node的重点学习笔记(1)————node

    node的重点学习笔记(1)----node 提到node就必须提一下他的npm了,npm是世界上最大的开放源代码的生态系统.通俗来说这就如同亚马逊丛林,要啥物种有啥物种,一个巨大的生态圈,里面有一堆 ...

  4. C语言--计算数组的平均值

    //数组 int main() { ]; double sum = 0.0; ; int x; scanf("%d", &x); ) { muber[cnt] = x; c ...

  5. JAVA保留小数点位数

    /** * java 如何保留指定位数的小数 * @author Administrator * */ public class Test04 { public static void main(St ...

  6. Neo4j:图数据库GraphDB(四)Python中的操作

    本文总结下Python中如何操作Neo4j数据库,用到py2neo包,Pip install 一下. 1 连接neo4j数据库:跟其它数据库一样,操作前必须输入用户名和密码及地址连接一下. from ...

  7. pdfminer API介绍:pdf网页爬虫

    安装 pip install pdfminer 爬取数据是数据分析项目的第一个阶段,有的加密成pdf格式的文件,下载后需要解析,使用pdfminer工具. 先介绍一下什么是pdfminer 下面是官方 ...

  8. [Luogu2879][USACO07JAN]区间统计Tallest Cow

    题目描述 FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a p ...

  9. Netty - 粘包和半包(上)

    在网络传输中,粘包和半包应该是最常出现的问题,作为 Java 中最常使用的 NIO 网络框架 Netty,它又是如何解决的呢?今天就让我们来看看. 定义 TCP 传输中,客户端发送数据,实际是把数据写 ...

  10. 13.多级代理下Nginx透传真实IP

    1.基于代理(七层负载均衡)情况下 透传客户端的真实IP 环境: 10.0.0.5 proxy_node1 一级代理 10.0.0.6 proxy_node2 二级代理 10.0.0.7 proxy_ ...