整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


《算法竞赛中的初等数论》的全部内容的 Portable Document Format 版本全部开源啦!详见:我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》《数据结构知识梳理》)

写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,仅做交流学习使用,无任何商业用途。因个人实力时间原因,本文并非完全原创,请大家见谅。

《算法竞赛中的初等数论》

数论全家桶(信奥 / 数竞 / ACM)

繁凡さん(孟繁宇)

2021/1/29

https://fanfansann.blog.csdn.net/

前言

  数论是纯粹数学的分支之一,主要研究整数的性质。整数可以是方程式的解(丢番图方程)。有些解析函数(像黎曼 ζ 函数)中包括了一些整数、质数的性质,透过这些函数也可以了解一些数论的问题。透过数论也可以建立实数和有理数之间的关系,并且用有理数来逼近实数(丢番图逼近)。

  按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论、计算数论等等。

  简而言之,数论就是研究整数的理论,在ACM / OI 竞赛中,经常用到数论的相关知识,纯粹考察数论的题目并不会很多,大部分是和其他类型的问题结合起来的,常考知识:约数,倍数,模线性方程,欧拉定理,素数,反演等等。

  本文着重于编程竞赛,即国际大学生程序设计竞赛 ACM / ICPC 、信息学奥林匹克竞赛 NOIP,NOI,IOI等编程竞赛中相关的初等数论问题,包含几乎所有数论相关内容的定理,概念,代码实现,部分证明以及例题选讲,更多定理证明内容参见《初等数论及其应用》和《具体数学》。

  由于涵盖了初等数论的绝大多数概念,定理,证明,推论,所以本文同样适合数学竞赛的同学阅读使用。

​ 其中:

  0x00整除,讲解了一些整除的基础知识,理解这些内容是我们学习接下来的内容的基础。

  0x10整除相关,为大家系统地讲解了初等数论研究的最重要的内容之一:素数与约数,包括素数、反素数、唯一分解定理、最大公约数、最小公倍数、互质与欧拉函数等整除相关的基本概念,并稍作拓展,部分小节为大家提供了一些经典例题,供大家学习巩固使用,还讲解了容斥原理的相关概念和在数论里的两个经典运用,是非常重要的知识点。最后拓展了一下素数在实际生活中的应用:加密与解密,感兴趣的读者可以深入学习一下。

  0x20同余,同余及同余方程,初等数论研究的另一大版块,也是竞赛要求的基础知识,首先为大家带来的模运算这个重要概念,在了解了同余的概念以后又为大家简单讲解了竞赛常用定理,欧几里得算法,拓展欧几里德算法,类欧几里得算法,求乘法逆元,解线性同余方程、高次同余方程等基本算法,需要大家理解并掌握。前三章是数论的基础,请一定掌握。

  0x30积性函数,从第四章开始,就进入了进阶版的数论知识,我为大家讲解了数学中会涉及到的一些函数,以及最重要的积性函数的相关概念,常见积性函数,并简要证明了莫比乌斯函数是积性函数,其余积性函数的证明方法大同小异,留给读者自己尝试。介绍了较为重要的狄利克雷卷积概念,即两个积性函数间的一种基本运算,给出了一些性质以及推导结论,希望读者可以理解并自己推导,理解这些内容是大家迈向高阶数论的基石。

  0x40反演,从最基础的欧拉反演、莫比乌斯反演出发,为大家列举了包括二项式反演、斯特林反演、单位根反演、子集反演、最值反演、拉格朗日反演等 “ 简单 ” 反演的基本性质定理以及部分推导出的 “ 常用 ” 结论,希望读者可以阅读以后自行证明。除此之外,还为大家列举了一些常用技巧,以及在求解积性函数时有奇效的 Dirichlet\tt DirichletDirichlet 前缀和的相关概念和实现代码。

  0x50筛法,即积性函数的筛法,从基础的线性筛法拓展开来,介绍了复杂度较之线性筛更为优秀的杜教筛的相关证明及应用,并提供了更加优秀的 Min_25 筛、sieve 筛的基本模板和使用用法。

  0x60原根,研究了正整数 nnn 的模 nnn 整数集中的乘法结构,介绍了模 nnn 整数的阶的基本性质,引出原根的概念。提供了原根的性质、求法、离散对数这一重要概念以及竞赛相关的一些简单应用,如原根在快速数论变换的应用以及证明。并讲解了前面遗留的第二种高次同余方程(N 次剩余)的解法。

  0x70二次剩余,就是一个二次项 %p\%p%p 后的剩余。为大家讲解二次同余方程的相关性质解法,在竞赛中常有考察。

  0x80某些非线性丢番图方程,前面介绍了丢番图方程的概念,并讲解了使用拓展欧几里得算法求解线性丢番图方程的方法以及代码实现。那么对于非线性的丢番图方程呢?一个广为人知的定理表明,并不存在一个适用于所有非线性丢番图方程的通用解法,人们在数百年的研究中得到了一些特殊的非线性丢番图方程的解法,例如著名的毕达哥斯拉三元组,费马大定理,佩尔方程,此部分竞赛涉及较少,但是不排除哪位出题人的兴致盎然,建议简要阅读了解相关定理解法。

  0x90高斯整数,前面的章节,我们研究的都是整数集合的一些性质,有趣的是其他的一些数集中也存在着一些类似整数的性质。我们将数论拓展到复数集,也就是高斯整数,即形如 a+bia+bia+bi 的数。本章为大家讲解了一些数论概念在复数集上的拓展,例如高斯素数,高斯整数上的最大公约数、唯一分解定理,高斯整数环等相关概念,竞赛中略有涉及,建议了解相关概念即可。

  0x100杂项,收录了一些不知道怎么分类的内容,说不定会有什么用… 例如幂级数的展开式大全,哥德巴赫猜想及其拓展,特征值法求递推式通项公式等等。

  为了能使大家更好地运用这些知识,我基本上为每个算法都增加了一个竞赛例题选讲板块,优先选择算法经典例题、ICPC / CCPC 真题,并附上了我的详细题解以及部分题目代码,每道题目都给出了相应的题目编号,来源各大OJ,作为大家的课后练习。当然,仅凭这些例题是远远不够的,剩下的就需要大家自己上网检索高质量习题自行练习。

  希望大家可以认真阅读本篇文章,真正学会数论,学懂数论,爱上数论,希望本文能在大家的算法竞赛道路上提供帮助,助力大家实现自己的梦想。若真如此,本人荣幸之极。

​ 孟繁宇

​ 2021年1月29日于郑州家中书房

  注:本文涵盖了编程竞赛相关的几乎所有数论知识,0x00 ~ 0x30 为基础数论知识,建议一定掌握,0x0x40 ~ 0x72 均为高阶数论知识,稍有难度,建议进阶的同学理解掌握,0x73 ~ 0x100为拓展内容,部分取自《初等数论及其应用》(机械工业出版社,原书第5版),考察频率较低,但还是建议阅读了解,属于选学内容。

目录

正文将视情况择机分批发布

  正文内容太长,共十章,一百多小节,近五万字,近十五万字符,放到一块的话网页都快崩了 ~

点击下方目录里蓝色的字就可以跳转啦

  • 前言

  • 0x00 整除

  • 0x10 整除相关

  • 0x20 同余

    • 0x21 整数的取余运算

      • 0x21.1 整数的取余运算(模运算)
      • 0x21.2 整数模意义下的加减乘乘方运算
      • 0x21.3 整数模意义下的除法运算
    • 0x22 同余
      • 0x21.1 同余的性质
      • 0x21.2 费马小定理
      • 0x21.3 欧拉定理
      • 0x21.4 威尔逊定理
    • 0x22 拓展欧几里德
      • 0x22.1 裴蜀(Bézout)定理
      • 0x22.2 解二元模线性方程
      • 0x22.3 扩展欧几里德算法
      • 0x22.4 类欧几里德算法(一个求和技巧)
      • 0x22.5 整式方程
    • 0x23 乘法逆元
      • 0x23.1 乘法逆元定义与性质
      • 0x23.2 费马小定理求乘法逆元
      • 0x23.3 扩展欧几里得求乘法逆元
      • 0x23.4 线性递推求乘法逆元
    • 0x24 线性同余方程
      • 0x24.1 同余方程
      • 0x24.2 中国剩余定理
      • 0x24.3 拓展中国剩余定理
    • 0x25 高次同余方程(一)
      • 0x25.1 BSGS算法
      • 0x25.2 拓展BSGS算法
  • 0x30 积性函数

  • 0x40 反演

    • 0x41 整除分块

      • 0x41.1 前置知识
      • 0x41.2 整除分块
    • 0x42 莫比乌斯反演
      • 0x42.1 莫比乌斯反演公式
      • 0x42.2 莫比乌斯反演证明
      • 0x42.3 推导结论
      • 0x42.4 竞赛例题选讲
      • 0x42.5 莫比乌斯反演扩展
    • 0x43 欧拉反演
    • 0x44 二项式反演
    • 0x45 斯特林反演
    • 0x46 单位根反演
    • 0x47 子集反演
    • 0x48 最值反演 (Min-Max容斥)
    • 0x49 拉格朗日反演
    • 0x4A 反演常用技巧
    • 0x4B. Dirichlet 前缀和
      • 0x4B.1 Dirichlet 前缀和
      • 0x4B.2 Dirichlet 后缀和
      • 0x4B.2 倒推 Dirichlet 前缀和
      • 0x4B.3 倒推 Dirichlet 后缀和
  • 0x50 筛法

    • 0x51 线性筛法

      • 0x51.1 线性筛法求欧拉函数
      • 0x51.2 线性筛求莫比乌斯函数
      • 0x51.3 线性筛求约数个数函数
      • 0x51.4 线性筛求约数和函数
    • 0x52 杜教筛
      • 0x52.1 杜教筛
      • 0x52.2 求欧拉函数前缀和
      • 0x52.3 求莫比乌斯函数前缀和
    • 0x53 Min_25筛
    • 0x54 Powerful Number 筛
    • 0x55 洲阁筛
  • 0x60 原根

    • 0x61 整数的阶、原根与指标

      • 0x61.1 整数的阶
      • 0x61.2 整数的原根
      • 0x61.3 整数的指标(也称指数、离散对数)
    • 0x62 素数的原根
      • 0x62.1 多项式同余
    • 0x63 原根的存在性
    • 0x64 原根的应用
      • 0x64.1乘法换加法(取模意义下)
      • 0x64.2 快速数论变换
    • 0x65 高次同余方程(N次剩余)
  • 0x70 二次剩余

    • 0x71 二次剩余与二次非剩余
    • 0x72 Cipolla 算法解算法二次同余方程
    • 0x72 N 次剩余(N 次同余方程)
  • 0x80 某些非线性丢番图方程

    • 0x81 毕达哥斯拉三元组(勾股数)
    • 0x82 费马大定理
    • 0x83 平方和
    • 0x84 佩尔方程与连分数
      • 0x84.1 佩尔方程与连分数
      • 0x84.2 解佩尔方程
      • 0x84.3 竞赛例题选讲
  • 0x90 高斯整数

    • 0x90.0 复数

    • 0x91 高斯整数

    • 0x92 高斯素数

    • 0x93 唯一分解

    • 0x94 最大公约数

    • 0x95 同余和剩余系

    • 0x96 费马二平方和定理

    • 0x97 分解 4k+1 型素数

    • 0x98 构造 a^2 + b^2=n 的方案

    • 0x99 竞赛例题选讲

  • 0xA0 杂项

    • 0xA1 哥德巴赫猜想及其拓展
    • 0xA2 幂级数展开式常用公式
    • 0xA3 特征根法求数列通项公式
  • 0xB0 后记

后记

  原本只是打算简单花费一天的时间整理一下我学过的数论知识,加上最近刚刚看完《初等数论及其应用》,以及《具体数学》,学到了一些奇怪的新姿势,想要记录一下。发现最后越写越多,从最开始的五千字,一万字,写到了最后的四万五千字,十四万七千的字符,涵盖的内容也越来越多,我几乎翻遍了全网的数论博客,抽取出了很多人总结的经验之谈。为了使得整篇不那么枯燥,我为每个算法都精选了 经典例题 / ICPC / CCPC / NOIP / NOI 真题,并附上我的详细题解和部分代码。我现在几乎可以负责任地说:算法竞赛,数论相关,这一篇就够了

(何止是够了,还多了好多好多 )

参考资料:

  • 《初等数论及其应用》

  • 《具体数学》

  • 《算法竞赛进阶指南》

  • 《简明数论》

  • 神O的数论全家桶

  • 数学笔记:数论

  • 【知识总结】数论全家桶

  • 初等数论学习笔记(一)sola

  • 莫比乌斯反演也是数论

  • ACM中的数学问题合集

  • ACM数论基本定理

  • 关于数论的一些总结

  • 数论总结

  • ACM数论总结

  如果对本文感兴趣想要让我更新的话,可以在点赞后到评论区里文明催更,我将视情况(看心情 )更新

  都是一些常见的数论知识,应该没什么人想看吧

  今天发布这个索引文章,算是我给我自己的生日礼物?(雾

  说明一下,本文是我在学习之余,花了一些时间整理的数论知识合集,也可以说是《初等数论及其应用》学习笔记,纯属个人乱搞,部分内容摘自《初等数论及其应用》、《具体数学》等相关数论书籍,或是互联网上各式各样的博客,增加了一些个人见解,自己喜欢的例题和分析,因为我太菜了,请大佬们轻虐,呜呜呜

  因为算是一个个人向的知识例题模板整理,所以不是很想发出来,要是想看的人多我就发一下吧…

【更新完毕】《算法竞赛中的初等数论》(ACM / OI / MO)前言、后记、目录索引(十五万字符的数论书)相关推荐

  1. 《算法竞赛中的初等数论》(一)正文 0x00整除、0x10 整除相关(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  2. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  3. 《算法竞赛中的初等数论》(二)正文 0x20同余(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  4. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)

    你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...

  5. 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  6. 《算法竞赛中的初等数论》(三)正文 0x30 积性函数(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  7. 《算法竞赛中的初等数论》(六)正文 0x60 原根(ACM / OI / MO)(二十万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  8. 成为计算几何master之路——记算法竞赛中常用的计几算法及思想

    文章目录 成为计算几何MASTER(FAKE)之路 1 引言 1.1 精度 1.2 剖分 1.3 层次化设计 2 点,向量和线 2.1 点积和叉积 2.2 线段(直线) 2.2.1 点在线段上判定 2 ...

  9. 算法竞赛中的时间复杂度选择——以最大连续和问题为例

    最大连续和问题 最大连续和问题.给出一个长度为nn的序列 A1,A2,-,AnA1, A2,-, An,求最大连续和.换句话说,要求找到1≤i≤j≤n1≤i≤j≤n,使得Ai+Ai+1+...+AjA ...

最新文章

  1. js base64 解码
  2. Android开发之发送邮件功能的实现(源代码分享)
  3. UIGestureRecognizer手势介绍
  4. 开发中遇到的问题,以及笔记
  5. POPUP_GET_VALUES_DB_CHECKED’
  6. 28、shareSDK分享以及 QQ应用平台申请遇到的问题
  7. php sql 去除重复数据,MSSQL_快速删除重复记录,SQL Server如何实现?,如果一张表的数据达到上百万 - phpStudy...
  8. make -j32 21 | tee show.log
  9. linux 函数学习--kzalloc()
  10. $.post()提交了数据,return不给跳转
  11. python自动登录qq空间_python 利用splinter组件,自动登录QQ空间
  12. 如何在Mac上恢复格式化的相机卡
  13. python与西门子1200通讯_西门子S7-1200的以太网通信
  14. CnForums1.0 Alpha RC1 发布
  15. 【AMESim】AMESim和Simulink联合仿真步骤
  16. jsp来实现 验证码 登录案例 有图 有码
  17. 小程序 订阅消息 原来就是如此
  18. 怎么在uefi解锁磁盘_磁盘不支持uefi布局如何解决_Win10系统更新提示不支持UEFI固件的磁盘布局怎么办...
  19. 比较全面的安全测试用例设计思路
  20. 小破练习-嵌套循环及列表

热门文章

  1. 一本看到技巧又能保持阳光心态励志书(来自苏鹏的推荐)
  2. 单相交流电机为什么需要电容才能正常启动?
  3. Win11安装ISE14.7 for windows10
  4. 背八股文的都是什么水平
  5. 使用四种框架分别实现1百万websocket常连接的服务器
  6. shell 实现加减乘除
  7. 读入一幅RGB图象,编写程序显示图象中任一象素点的RGB值。
  8. .java.smap_Java Get.getAttributesMap方法代码示例
  9. Kali虚拟机Virtual Machines解压即可使用
  10. Python 的主要应用领域有哪些?