数学问题
初等数论
-
a|b:a 整除 b,也就是 a 是 b 的因数,b 是 a 的倍数,b=ka
-
取模 取整:b=ka+r,其中 0≤r<a,则称 ⌊ba⌋=k,bmoda=r。
-
整数唯一分解定理:每个整数 n 可以唯一的写成 ∏pkii 的形式,其中 pi 是第 i 个质数。
-
$ lcm (a, b) \times gcd(a, b) = a \times b ,(本质:max(a,b)=a+b-min(a,b)$)
-
Min−Max 容斥:maxx∈Sx=∑∅≠T⊆S(−1)|T|−1minx∈Sx
-
扩展 Min−Max 容斥:kth max(S)=∑∅≠T⊆S(−1)|T|−kC|T|−1k−1min(T)
-
lcm(s)=∏∅≠T⊆Sgcd(T)(−1)|T|−1
-
gcd(xa−1,xb−1)=xgcd(a,b)−1
-
Fibonacci 数列相邻两项互质。F(n)=F(m)F(n−m−1)+F(m−1)F(n−m)
-
对于斐波那契数列,gcd(F(a),F(b))=F(gcd(a,b))
-
费马小定理:当 p 是质数,p∤a 时,ap−1≡1(mod p)
-
扩展欧拉定理:当gcd(a,m)≠1时,有 ak≡amin(k,kmodφ(m)+φ(m))(mod m)
Miller-Rabin
Almost O(logn) 近似判断一个数是不是质数。
如果 p 是质数,设 p−1=d×2r,则对于 a<p,有
ad≡1(mod p)∨∀0≤i<r,ad×2i≡−1(mod p)
在 long long 范围内,取 a∈2,3,5,7,13,29,37,89 依次检验,保证不出错
整除分块
一般用于对于所有的 1≤i≤n,处理关于 ⌊ni⌋ 的相关问题。
算法基于 ⌊ni⌋ 只有 O(√n) 种取值。
流程如下,初始 l=1
- 这一段的整除值计算为 val=⌊nl⌋
- 这一段的右端点为 r=⌊nval⌋
- 处理完 [l,r] 的信息后,l←r+1,继续处理下一段,超过 n 就退出。
博弈论
n 堆石子,分别有 a1,a2,⋅⋅⋅,an 个,每次从某一堆中拿走若干个,两人轮流操作,不能操作者输。
必胜态:a1⊕a2⊕⋅⋅⋅⊕an≠0
对于阶梯 Nim 游戏,即有 每次从第 i 堆中拿走若干个放进第 i−1 堆,看作只保留所有奇数堆进行的 Nim 游戏解决。
Anti-Nim 游戏:
先手必胜的条件为:
-
- 每堆都是 ≤1 个,异或和为 0
-
- 存在某堆 >1 个,异或和不为 0
本文作者:PassName
本文链接:https://www.cnblogs.com/spaceswalker/p/18494378
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步