数论基础
欧拉函数
定义
欧拉函数
公式
其中:
推导
如何推导
推导的方式要用到容斥原理。
欧拉函数
如果
推导过程
我们设:
那么
为了方便推导,我们暂且先设
于是就可以得到公式:
在进行通分之后,我们发现这个式子其实已经等于
得证。
代码
定义法
-
只能处理一个数的
。 -
思路是一边分解质因数一遍处理欧拉函数
线性筛法
-
在进行筛法的时候处理欧拉函数
-
可以在一次线性筛中处理出
中的欧拉函数
一些等式
-
当
是质数的时候, 。 -
当
是质数的时候,存在 使得 -
积性函数,如果
与 互质,则
参考文献:
费马小定理
如果
谁想推啊!所以不推了。(~逃
逆元
逆元的定义
如果一个线性同余方程,
快速幂求逆元
单个求,时间复杂度
推导
所以什么?很容易看出来
注意了,我们是由费马小定理推出
代码
记得 #define int long long~
线性求逆元
整体的思想就是利用已知的数据从前往后推,以达到
首先,我们有一个
设:
将这个式子放在
乘上
移项
将,
这样我们就可以利用递推来完成计算逆元的操作了。
注意:因为是存在负数,所以我们取模操作的时候就要 (x + mod) % mod
参考文献:
扩展欧几里得exgcd
扩展欧几里得算法是用来求解
推导过程
设:
又
一直递归迭代即可。
代码
线性同余方程
定义
找出这个方程的可行解。(
Exgcd 解法
首先:可以将式子变为
其中
我们先根据 Exgcd 来找出一组
然后等式同除
得到:
那么这就是这个方程的可行解。
当:
为啥,我就不知道了。这对于任意整数
一般来说,题目让你求最小解,所以只需要求
其中就有:
code
中国剩余定理(CRT)
对于
第
对于这个方程组需要解
题目保证所有
设
这样就可以求得
我们要证明
在
所以
又有
所以我们有:
奥管他推的对不对,知道公式不就是了!!
拓展中国剩余定理(EXCRT)
认为还是金钩爷讲的好,证明其实感觉。。。哎算了,就把证明发这了。反正正常用直接套公式。
现在考虑合并两个同余方程的时候该怎么做。
这个可以写作:
由于
是一个常量,因此 ,其中 都是常数 整理一下后就是
通过exgcd,可以获得一组关于
的解 即
由于
,现在要最小化 ,也就是最小化 ,即最小化 由于
的通解为 ,因此 的最小值为 于是就可以将这两个同余方程合并为
参考文献:https://www.luogu.com.cn/blog/KingSann/solution-p4777。
对于洛谷 P4777 的模板代码如下:
__EOF__

本文链接:https://www.cnblogs.com/gsczl71/p/17870948.html
关于博主:GDSZ初一蒟蒻,明年拿下七级勾
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:gsczl71,转载请注明原文链接:https://www.cnblogs.com/gsczl71/p/17870948.html
gsczl71 AK IOI!RP = INF 2024年拿下七级勾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端