首页 > 其他分享 >【学习笔记】数论分块

【学习笔记】数论分块

时间:2024-04-08 13:35:16浏览次数:22  
标签:lfloor 10 12 frac 分块 数论 rfloor 笔记 100

先看一个例子:

给出正整数 \(n(n \leq 10^{12})\),计算:

\[\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor \]

如果直接暴力,复杂度为 \(O(n)\),无法在 1s 内通过,但使用数论分块(整除分块)可以将复杂度降至 \(O(\sqrt{n})\)。

先看个例子,当 \(n = 100\) 时,\(i\) 和 \(\lfloor \frac{n}{i} \rfloor\) 的情况如下:

$i \in $ $\lfloor \frac{n}{i} \rfloor = $
\([1,1]\) \(100\)
\([2,2]\) \(50\)
\([3,3]\) \(33\)
\([4,4]\) \(25\)
\([5,5]\) \(20\)
\([6,6]\) \(16\)
\([7,7]\) \(14\)
\([8,8]\) \(12\)
\([9,9]\) \(11\)
\([10,10]\) \(10\)
\([11,11]\) \(9\)
\([12,12]\) \(8\)
\([13,14]\) \(7\)
\([15,16]\) \(6\)
\([17,20]\) \(5\)
\([21,25]\) \(4\)
\([26,33]\) \(3\)
\([34,50]\) \(2\)
\([51,100]\) \(1\)

我们发现,\(\lfloor \frac{n}{i} \rfloor\) 的取值很少,在本例 \(n = 100\) 中只有 \(19\) 种取值。事实上,对于任意 \(n\),\(\lfloor \frac{n}{i} \rfloor\) 的取值不会超过 \(2 \sqrt{n}\) 种。

证明如下

有一个显然的结论(结合例子可以理解),所有相等的 \(\lfloor \frac{n}{i} \rfloor\) 对应的 \(i\) 是连续的。因此,我们把这段连续的 \(i\) 作为一个“块”来处理

标签:lfloor,10,12,frac,分块,数论,rfloor,笔记,100
From: https://www.cnblogs.com/5002-qwq/p/18120924

相关文章

  • 个人博客项目笔记_01
    1.工程搭建前端的工程运行流程:进入项目目录执行cmd命令:若是第一次启动需要依次输入如下命令:npminstallnpmrunbuildnpmrundev之后直接执行npmrundev即可!1.1新建maven工程新建maven工程blog作为父工程,然后在父工程中创建子工程blog-api向父工程的pom.xml文件......
  • 学习笔记445—白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组
    白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖、基本路径覆盖语句覆盖:每条语句至少执行一次。判定覆盖:每个判定的所有可能结果至少出现一次。(又称“分支覆盖”)条件覆盖:每个条件的所有可能结果至少执行一次。判定/条件覆盖:一个判定中的每......
  • 【学习笔记】基础数据结构:猫树
    猫树是线段树的一个特殊版本,猫树不再支持修改操作,类似\(\text{ST}\)表猫树支持高速区间查询,每次查询都只需要进行\(1\)次合并操作,设单次合并操作的复杂度为\(O(k)\),建立猫树的复杂度是\(O(kn\logn)\)的,而查询的复杂度是\(O(k)\)的一般单次查询的复杂度是\(O(1)\),所......
  • Vue3入门笔记【黑马】
    目录:认识Vue31.Vue3的优势使用create-vue搭建Vue3项目1.认识create-vue2.使用create-vue创建项目熟悉项目和关键文件组合式API-setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3.setup语法糖组合式API-reactive和ref函数1.reactive2.ref3.re......
  • 茴香豆:搭建你的 RAG 智能助理(笔记)
    视频地址:https://www.bilibili.com/video/BV1QA4m1F7t4文档地址:https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/readme.md作业地址:https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/homework.md茴香豆项目地址:  https://github.com/InternLM/......
  • JAVA安全漫谈1-8笔记
    一.反射篇1classloader就是java的类加载器,告诉虚拟机如何加载这个类。默认情况下根据类名来加载类,类名必须是完整路径publicclassclass_init{{System.out.println("123");}static{System.out.println("456");}publicclas......
  • 敏感词检测-DFA算法笔记及实现
    引子敏感词检测,这个是很多文字类服务都要遇到的问题,最近项目上接触到,特此调研梳理下这部分的内容。比如当我们输入一些包含暴力或者色情的文本,系统会阻止信息提交。敏感词过滤就是检查用户输入的内容有没有敏感词。OK,让我们开始吧。一、算法原理简介一般敏感词检测之后......
  • C++学习笔记九--模版
    目录前言1.函数模版1.函数模版的概念和定义2.函数模版的实例化2.类模版1.类模版的概念和定义2.类模版的实例化3.示例代码前言        这篇文章介绍下C++中的模版,包括函数模版和类模版。1.函数模版    在编程的过程中,编写函数都会考虑将其写......
  • 协同过滤笔记
    笔记记录一下学习工作中遇到的一些知识,以防遗忘,不清楚的可以回来再看。一些专有名词embedding:隐向量非常重要无处不在召回:粗略计算要返回结果,例如从100W商品中取比较可能的100个负采样负采样(NegativeSampling)是一种用于训练词嵌入模型的技术。在自然语言处理中,词嵌入......
  • Python基础笔记01-Python基础
    Python基础-day1!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.文档工具typora2.环境搭建安装Python解释器学习Python语法Python......