首页 > 其他分享 >数论分块

数论分块

时间:2023-12-07 20:57:04浏览次数:29  
标签:lfloor geq frac 分块 数论 rfloor leq therefore

前言

数论分块我实际上在2021年的暑假就已经接触过了,当时是当成了定理来记,所以现在忘得也差不多了。

最近决定重温(从零开始重修)数论分块,利用坐地铁的时间看了几篇关于数论分块的博客文章(源自《洛谷日报》),感觉有些讲得不是非常详细,质量参差不齐。有些往往只放几个性质,然后将结论直接写在下面。这种书写方式首先忽略了思维引导的过程,其次也没有将推导过程讲清楚。于是借此我也进行一些补充,把作为数论小白的理解心得写得稍微详细一些。

问题简化

求 \(\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor\)

性质

性质0

设 \(x,y\) 为任意实数。

显然,\(x\) 满足 \(\lfloor x \rfloor \leq x\)

显然,\(x,y\) 满足若\(x \leq y\),则有 \(\lfloor x \rfloor \leq \lfloor y \rfloor\)

性质1

对于一个 \(i\) 满足 \(1 \leq i \leq n\),则有且仅有一个包含 \(i\) 的连续区间 \([l,r]\) 满足对于其中任一整数 \(j\) 都有 \(\lfloor \frac{n}{i} \rfloor = \lfloor \frac{n}{j} \rfloor\),这里记为一个同商块。

证:

分析 \(y = \frac{n}{x}\) 在正数部分的图像会发现这是一个反比例函数,性质显然。

性质2

对区间 \([1,n]\) 一定只存在 \(2 \sqrt{n}\) 或 \((2 \sqrt{n} - 1)\) 个不同且连续、长度递增的同商块。

证:

见此博客文章

这是我几个月前在网上翻到的,真的写得挺好的。

此文章甚至提出了另一种解决此问题的方法,但这里不再说了。

性质3

\[\lfloor \frac{n}{i} \rfloor = \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor \]

即 \(i\) 与 \(\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor\) 一定在同一个同商块中。

证:

\[\because \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \leq \frac{n}{\lfloor \frac{n}{i} \rfloor} \]

\[\therefore \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \geq \frac{n}{\frac{n}{\lfloor \frac{n}{i} \rfloor}} \]

\[\therefore \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \geq \lfloor \frac{n}{i} \rfloor \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor \geq \lfloor \frac{n}{i} \rfloor \]

\[\because \lfloor \frac{n}{i} \rfloor \leq \frac{n}{i} \]

\[\therefore \frac{n}{\lfloor \frac{n}{i} \rfloor} \geq \frac{n}{\frac{n}{i}} \]

\[\therefore \frac{n}{\lfloor \frac{n}{i} \rfloor} \geq i \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \geq \lfloor i \rfloor \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \geq i \]

\[\therefore \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \leq \frac{n}{i} \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor \leq \lfloor \frac{n}{i} \rfloor \]

\[\because \begin{cases} \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor \geq \lfloor \frac{n}{i} \rfloor \\ \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor \leq \lfloor \frac{n}{i} \rfloor \\ \end{cases} \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor} \rfloor = \lfloor \frac{n}{i} \rfloor \]

性质4

\[i \leq \frac{n}{\lfloor \frac{n}{i} \rfloor} \]

即 $ \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor $ 一定是包含 \(i\) 的同商块的右端点。

证:

\[\because \lfloor \frac{n}{i} \rfloor \leq \frac{n}{i} \]

\[\therefore \frac{n}{\lfloor \frac{n}{i} \rfloor} \geq \frac{n}{\frac{n}{i}} \]

\[\therefore \frac{n}{\lfloor \frac{n}{i} \rfloor} \geq i \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \geq \lfloor i \rfloor \]

\[\therefore \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \geq i \]

\[\therefore i \leq \lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor \]

具体实现

问题解决

由 \(i\) 到 \(\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor\) 的所有值除 \(n\) 并向下取整的结果一定是相等的(性质1、3、4),因此直接计算每个同商块的贡献,因为最多只有 \(2 \sqrt{n}\)
个不同的同商块(性质2),而对于任意一个 \(i\) 我们都直到它所在同商块的右端点,所以可以直接枚举每个同商块,每次使 \(i\) 变为 \(\lfloor \frac{n}{\lfloor \frac{n}{i} \rfloor} \rfloor + 1\)。

Code:

int Ans = 0;
for (int L = 1, R;L <= n;L = R + 1){
    R = n / (n / L);
    Ans = (Ans + (R - L + 1) * (n / L) % mod) % mod;
}
return Ans;

问题衍生

二维数论分块,感兴趣的可以自己去查,这里不说了。

例题

洛谷题单

标签:lfloor,geq,frac,分块,数论,rfloor,leq,therefore
From: https://www.cnblogs.com/imcaigou/p/17883919.html

相关文章

  • 算法随笔——分块
    介绍分块的基本思想是通过适当的划分和预处理,用空间换时间,更加接近朴素算法,是一种暴力数据结构。例题1例如最经典的区间修改区间查询,若用树状数组来做就显得过于麻烦了。而用线段树做这道题,虽然通用,但马亮比较大,非常不友好。于是一种\(O(nlogn)\)的解法出现了——分块。思路......
  • 【数论】同余 学习笔记
    同余定义费马小定理定理内容:若\(p\)是质数,则有:$\foralla\inZ,a^p\equiva\pmodp$。推论:当\(\gcd(a,p)=1\)时,\(a^{p-1}\equiv1\pmodp\)。裴蜀定理及拓展欧几里德算法裴蜀定理:\(\foralla,b\inZ\),一元二次不定方程\(ax+by=\gcd(a,b)\)有整数......
  • 《复变函数论》学习提纲
    第一章复数与复变函数Loading...第一节复数Loading...1.复数域Loading...2.复平面3.复数的模与辐角第二节复平面上的点集第二章解析函数第三章复变函数的积分第四章解析函数的幂级数表示法......
  • 初等数论中的基础概念
    整除设有整数a,b且a 不等于0。如果存在整数q,使得b=aq,那么就说b 可被a 整除,记作a∣b,b 不被a 整除记作a∤b。比如3∣9的意思是3能整除9 ,而3∤10是3不能整除10。......
  • 分块模型
    分块是一种暴力做法的优化。基本思想是把要操作的对象分为根号n份,然后按份进行操作。模板题:  #include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e5+10;structNode{intl,r;LLsum,lazy;}blk[N];intn,m;......
  • 分块
    分块是一种码量较小,复杂度相对优秀的算法。可以参考OIwiki上对分块的介绍。例题引入:P3870[TJOI2009]开关这道题用来介绍分块的基本操作。首先题意非常明确,需要维护区间求和、区间取反两种操作,暴力修改查询的话,单次需要\(O(n)\)。我们可以将\(sz\)个连续的灯划为一个块......
  • 单文件WebUploader做大文件的分块和断点续传
    前言:WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS6+,android4+。两套运行时,同样的调用方式,可供用户任意选用。 上面......
  • 关于解数论不等式
    今天在群里又看到了经典的数论不等式:\(\minx,s.t.L\leax\bmodb\leR\)。以及杜岩旭问这个是不是等价于\(\minat\bmodb,t\in[L,R]\)。实际上当然是等价的。首先我们可以胡乱处理一下令\(a\perpb\),无论在哪个问题中都是一样的,这样有逆元。接下来,先考虑如何前者变......
  • 整数分块
    整数分块(真的会考吗)对于形如\(\sum_{i=1}^{n}\lfloorx/i\rfloor\)的式子,我们有这么一个\(O(\sqrtn)\)的做法别管证明了,我已经不是很记得了,反正形式很简单for(intl=1,r;l<=n;l=r+1){if(k/l!=0)r=min(k/(k/l),n);elser=n;sum+=(r-l+1)*(k/l);}当......
  • 【学习笔记】初等数论-组合计数
    加法原理若完成一件事的方法有\(n\)类,其中第\(i(1\lei\len)\)类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有\(\sum\limits_{i=1}^{n}a_i\)种不同的方法。乘法原理若完成一件事的步骤有\(n\)个,其中第\(i(1\lei\len)\)个步骤包括\(a......