from a famous oier \(\texttt{tyqtyq}\)请点链接tyqtyq~! - 博客园 (cnblogs.com)

数论分块

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

在\(O(n)\)筛出\(f(i)\)的前缀和后, 可以在单次\(O(\sqrt n)\)的复杂度下求出上式.

考虑\(\lfloor\frac{n}{i}\rfloor\)的取值个数. 在 \(i \leq \sqrt n\)时最多只有\(\sqrt n\)个\(i\), 故最多只有\(\sqrt n\)个取值.

在\(i>\sqrt n\)时, \(\lfloor\frac{n}{i}\rfloor \leq \frac{n}{i}<\sqrt n\), 故最多只有\(\sqrt n-1\)个取值.

因此我们可以考虑枚举\(\lfloor\frac{n}{i}\rfloor\)的取值. 因为函数不下降我们考虑枚举每个取值区间的左右端点. 不妨设某个取值区间的左端点是\(l\), 考虑求出该取值区间的右端点\(r\). 不妨设\(\lfloor\frac{n}{l}\rfloor = k\), 我断言\(r = \lfloor\frac{n}{k}\rfloor\). 因为\(kr \leq n \leq (k+1)r\), 所以必然在取值区间内. 又\(k(r+1) \geq n\)所以\(r+1\)不在取值区间内. 故右端点为\(r\).

莫比乌斯反演

两个性质

\(\sum\limits_{d|n} \mu(d) = [n=1]\) (经常用来展开\([f(n)=1]\))

\(\sum\limits_{d|n} \varphi(d) = n\)

对于 \(\gcd\) 的反演(出现\(\gcd\)的时候枚举\(\gcd\)也是一种时常奏效的方法):

\[\begin{align}f(n) &= \sum\limits_{i \leq a} \sum\limits_{j \leq b} [\gcd(i, j)=n]\\g(n) &= \sum\limits_{n|d} f(d)\\&= \sum\limits_{i \leq a} \sum\limits_{j \leq b} [n|\gcd(i, j)] \\&= \lfloor\frac{a}{n}\rfloor \lfloor\frac{b}{n}\rfloor\\\sum\limits_{n|d} \mu(\frac{d}{n}) g(d) &= \sum\limits_{n|d} \mu(\frac{d}{n})\sum\limits_{d|x} f(x)\\&= \sum\limits_{n|x} f(x) \sum\limits_{\frac{d}{n}|\frac{x}{n}} \mu(\frac{d}{n})\\&= \sum\limits_{n|x} f(x) [x=n] = f(n)\end{align}
\]

对于\(\sigma_0\)的反演

\[\begin{align}\sigma_0(xy) &= \sum\limits_{a|x}\sum\limits_{b|y} [\gcd(a, b)=1]\\&=\sum\limits_{a|x}\sum\limits_{b|y}\sum\limits_{d|\gcd(a, b)}\mu(d)\end{align}
\]

对于\(\varphi\)的反演

\[\begin{align}\varphi(ij)&=\frac{\varphi(i)\varphi(j)\gcd(i, j)}{\varphi(\gcd(i,j))}\\&=\sum\limits_{d}\varphi(i)\varphi(j)\frac{d}{\varphi(d)} [d = \gcd(i, j)]\\\end{align}
\]

反演本质

\[\begin{align}g(n) &= \sum\limits_{d|n} f(d)\\ f(n) &= \sum\limits_{d|n} [\frac{n}{d}=1]f(d) \\ &= \sum\limits_{d|n} \sum\limits_{id|n} \mu(i)f(d) \\ &=\sum\limits_{i|n} \mu(i) \sum\limits_{d|\frac{n}{i}} f(d) \\ &=\sum\limits_{d|n} \mu(d) f(\frac{n}{d}) = \sum\limits_{d|n} \mu(\frac{n}{d}) f(d) \end{align}
\]

狄利克雷卷积 与 杜教筛

下文中的\(A\),\(B\),\(C\)均指某积性函数.

狄利克雷卷积

定义:

\(A*B(n) = \sum\limits_{d|n} A(d)B(\frac{n}{d})\)

几个常用的卷积

\(\varphi *I = id\)

\(\mu * I = \epsilon\)

\(\epsilon * A = A\)

\(A*(B*C) = (A*B)*C\)

\(A*B = B*A\)

\((A+B)*C = A*C+B*C\)

杜教筛的原理

设\(A = B*C\), 于是有

\[\begin{align}\sum\limits_{i=1}^{n} A(i) &= \sum\limits_{i=1}^{n} \sum\limits_{d|i} C(d) B(\frac{i}{d})\\&=\sum\limits_{d=1}^{n}C(d)\sum\limits_{k=1}^{\lfloor\frac{n}{d}\rfloor}B(k)\end{align}
\]

不妨设\(S(n) = \sum\limits_{i=1}^{n} B(i)\)所以\(C(1)S(n) = \sum\limits_{i=1}^{n}A(i) - \sum\limits_{d=2}^{n}C(d)S(\lfloor\frac{n}{d}\rfloor)\)

若选择一个较好的\(C\)和\(A\), 则可以通过数论分块在\(T(n) = O(\frac{n}{\sqrt m}+m)\)的时间复杂度内完成此问题, 其中\(m\)是一个常数, 代表我们需要先使用线性筛筛出\(S(1\sim m)\), 可以发现在\(m = n^{\frac23}\)时算法复杂度为\(O(n^\frac23)\)为最优.

【转载】数论学习笔记(Blog of tyqtyq)的更多相关文章

  1. 五一DAY1数论学习笔记

    by ruanxingzhi 整除性 如果a能把b除尽,也就是没有余数,则我们称a整除b,亦称b被a整除.(不是除以,是整除!!) 记作:\(a|b\) |这个竖杠就是整除符号 整除的性质 自反性 对 ...

  2. [转载]Log4net学习笔记

    Log4net 学习笔记: 主要是根据apache站点整理的: 原文链接:http://logging.apache.org/log4net/release/sdk/ http://logging.a ...

  3. [转载]pytest学习笔记

    pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...

  4. 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)

    ~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...

  5. 转载-python学习笔记之输入输出功能读取和写入数据

    读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Pytho ...

  6. 转载-Python学习笔记之文件读写

    Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...

  7. 转载——JavaScript学习笔记:取数组中最大值和最小值

    转载自:http://www.w3cplus.com/javascript/calculate-the-max-min-value-from-an-array.html. 取数组中最大值 可以先把思路 ...

  8. (转载)Android学习笔记⑨——android.content.ActivityNotFoundException异常处理

    异常1:Java.lang.ClassNotFoundException 08-13 18:29:22.924: E/AndroidRuntime(1875):Caused by: Java.lang ...

  9. 转载-python学习笔记之文件I/O

    Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...

  10. 转载-python学习笔记之常用模块用法分析

    内置模块(不用import就可以直接使用)   常用内置函数   help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(ob ...

随机推荐

  1. 一个ABAQUS model需要的Component

    component of abaqus model Abaqus模型由几个不同的组件组成,它们共同描述了要分析的物理问题. a abaqus model 至少要有: discrete goemtry ...

  2. ppt 实用技巧总结

    全是图片且颜色单一 解决方案:在图片上添加图形,加图标 效果图 2.文本功能10个 解决方案:添加背景图片+文本+图标 效果图 只有文本 没有过多内容怎么办

  3. 1h玩转kubernetes

    学习k8s就跟学习office三件套上,95%的人只会5%,而5%的知识可以干95%的事情,所以不要觉的k8s难 1 kubernetes 1 什么是kubernetes Kubernetes 是一个 ...

  4. Golang 入门 : 变量声明

    变量声明 在Go中,变量是包含值的一块存储.可以使用变量声明为变量命名.只需使用var关键字,后跟所需的名称以及变量将保存的值的类型. 一旦你声明了一个变量,就可以用=为它分配该类型的任何值: qua ...

  5. Content-Encoding:br 是一种什么编码格式?

    一.前言 在之前测试HTTP应答的压缩过程中无意间发现在Google浏览器下出现了 Content-Encoding:br 这种的编码格式,当时我就纳闷了,前面不是一直在研究GZip压缩吗?br压缩又 ...

  6. 【虚拟机】VirualBox安装macOS系统

    [虚拟机]VirualBox安装macOS系统 零.创建虚拟机 类型选择 Mac OS X 版本选择 macOS 10.13 High Sierra (64-bit) 注意:这边我设置的名称为 Mac ...

  7. 《机器人SLAM导航核心技术与实战》第1季:第11章_自主导航中的数学基础

    <机器人SLAM导航核心技术与实战>第1季:第11章_自主导航中的数学基础 视频讲解 [第1季]11.第11章_自主导航中的数学基础-视频讲解 [第1季]11.1.第11章_自主导航中的数 ...

  8. 团队项目:杰杰Bond团队成员介绍

    项目 内容 这个作业属于哪个课程 2025年春季软件工程(罗杰.任健) 这个作业的要求在哪里 [T.1] 团队项目:团队成员介绍 我在这个课程的目标是 学习软件工程相关知识,培养编程和团队协作能力,做 ...

  9. ESP32+Arduino入门(一):开发环境搭建

    前言 作为一名硬件小白,在动手组装了一下小智AI之后,感觉还挺有意思的,也想开始学习ESP32了. ESP32介绍 ESP32 是乐鑫科技(Espressif Systems)推出的一款高性能.低功耗 ...

  10. Hystrix两种隔离方式对比

    ​在微服务架构中,我们不可避免的与Hystrix打交道,最近在面试过程中,也总是被问到Hystrix两种熔断方式的区别,今天,就给大家做个小结. 首先,Hystrix熔断方式主要有两种: 线程池隔离 ...