今天的模拟赛里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));
得证 。

最新文章

  1. Java——新IO 通道
  2. Gradient Boosting Decision Tree学习
  3. 66. 有序数组构造二叉搜索树[array to binary search tree]
  4. 夺命雷公狗—angularjs—8—ng-class的简单用法
  5. list笔记总结
  6. PAT乙级真题1004. 成绩排名 (20)(解题)
  7. 【solr专题之四】在Tomcat 中部署Solr4.x
  8. C++ 11 创建和使用共享 weak_ptr
  9. 图片转成Base64
  10. windows下安装consul
  11. 2018.4.27 java容器
  12. grep基础用法
  13. Java知多少(56)线程模型
  14. Espresso小试
  15. 吴裕雄 python深度学习与实践(2)
  16. HibernateDaoSupport类的使用(转)
  17. fpm 制作rpm包
  18. fstream 和 iostream
  19. marquee实现跑马灯
  20. [leetcode]173. Binary Search Tree Iterator 二叉搜索树迭代器

热门文章

  1. bugku 很普通的数独
  2. App上下左右滑动封装
  3. PHP array_mulitsort
  4. 【css】CSS设置文字不能被选中
  5. 【Java必修课】ArrayList与HashSet的contains方法性能比较(JMH性能测试)
  6. opencv::视频人脸检测
  7. go-defer语句
  8. springboot pagehelper分页无效
  9. 【网络安全】Dos攻击科普文
  10. 现在Java 桌面应用程序能做到什么程度(Spring Boot+JavaFX2开发)