费马小定理#
当 a,p∈Z 且 p 为质数,且 a≢0(modp) 时有:ap−1≡1(modp)。
所以 ab≡abmod(p−1)(modp)。
欧拉定理#
当 a,m∈Z,且 gcd(a,m)=1 时有: aφ(m)≡1(modm)。
这里 φ(x) 是数论中的欧拉函数。
所以 ab≡abmodφ(m)(modm)。
扩展欧拉定理#
当 a,m∈Z 且 gcd(a,m)≠1 时有:
ab≡{ab,b<φ(m)a(bmodφ(m))+φ(m),b≥φ(m)(modm)
(第一种状况的含义是,如果 b<φ(m) 的话,那么就不能降幂。一般题目中 m 不会太大,则此时复杂度可以接受。而如果 b≥φ(m) 的话,那么复杂度可能超出预期,这个时候需要降幂来降低复杂度)
ExCRT#
个人认为比 CRT 更加好理解和记忆。
假设有 n 个同余方程:
x≡b1(modp1)x≡b2(modp2)⋯x≡bn(modpn)
可以直接使用 Exgcd 将这些同余方程合并:
b1+k1p1=b2+k2p2(modlcm(p1,p2))
根据这一点,用 Exgcd 求出 k1,k2 即可将方程合并。
卢卡斯定理#
用于模数为质数,但是较小的时候,求组合数:
(nm)=(n/pm/p)(n%pm%p)
当模数不是质数时,如果分解质因数,每个质因数的次数都为 1,那么分开做,再用 CRT 合并即可。
否则要用到 ExLucas。
库默尔定理#
设 m,n 为正整数,p 为素数,则 (n+mm) 含 p 的幂次等于 m+n 在 p 进制下的进位次数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现