数论分块小结
概念
下面除法皆表示整除
求:
显然,暴力 ,但有很多结果是相同的,所以可以分段每一段分别处理,大概有 段
令这一段的左端点(最小值)为 ,设 ,我们要找一个最大值 满足 ,显然 ,则 的和为
例1 P2261 [CQOI2007]余数求和
数论分块
下面除法默认下取整
显然,对于 必然是很多段连续的数组成,所以可以分块处理,也就是数论分块。
设当前这一块左端点为 ,结果为 ,则 ,前面乘 可以直接套等差数列求和公式。
时间复杂度
例2 牛客网235422 区间最大值
以下分数皆表示整除
显然,当 一定时, 越小越好,所以可以把每个 求出来,然后数列分块取最小值即可
例3 P3935 Calculating
显然, 就是 的因数个数。
设 ,所以答案在求
对于任意 ,它作为小于等于 的数的约数个数为 (向下取整),于是
观察上式, 显然可以通过数论分块在 的时间求出。
总时间复杂度
例4 牛客网NC13221数码
显然数论分块
然后统计一下每一块内1到9出现的情况乘上 即可
例5 P2260 [清华集训2012]模积和
设
前面那两坨就是个数论分块板子,后面那块拆一下:
这里还是可以数论分块,每次块的 可以取
然后还有几个难点
-
后面那坨鬼东西乘 ,众所周知二次方和公式
-
然后上面那个鬼公式因为上面三个乘起来会爆所以要用逆元
-
然后因为
↑↓出题人模数不是质数不能用费马只能老老实实打拓欧
本文来自博客园,作者:zhangtingxi,转载请注明原文链接:https://www.cnblogs.com/zhangtingxi/p/16531978.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!