点个赞评个论喵。
一、拓展欧几里得解二元一次不定方程
解形如 ax+by=c 的二元一次不定方程。
先行求解 ax+by=gcd(a,b)。
利用递归思想。求解下层递归的 x2,y2,回代上层。
易得递归边界为 x2=1,y2=0。①
因为 x=y2,y=x2−ba⋅y2。②
故此可以求出方程 ax+by=gcd(a,b) 的一组解。
由裴蜀定理得 gcd(a,b)∣c。
裴蜀定理:方程 ax+by=c 有整数解意味着 gcd(a,b) 能整除 c。反之亦然。(a,b,c 均为正整数)
即,gcd(a,b)∣c。
即原方程的一组解为 x0=gcd(a,b)c⋅x,y0=gcd(a,b)c⋅y。
证明:
①
ax+by=gcd(a,b)
bx2+(amodb)y2=gcd(b,amodb)
⋯
cxk+dyk=gcd(c,d)=c
此为递归边界,显然 xk=1,yk=0。
②
注意到 amodb=a−⌊ba⌋⋅b。
代入递归方程可得 bx2+ay2−⌊ba⌋⋅b⋅y2=gcd(b,amodb)。
合并同类项:ay2+b(x2−⌊ba⌋⋅y2)=gcd(b,amodb)。
因为 gcd(a,b)=gcd(b,amodb),所以得出 x=y2,y=x2−⌊ba⌋⋅y2。
此法仅能求出一组解。
通解:
x′=x0+t⋅gcd(a,b)b,y′=y0−t⋅gcd(a,b)a。(t 为任意整数)
最小解:
在周期 [1,gcd(a,b)b] 或 [0,gcd(a,b)b−1]:
非负整数解 xmin=(x0modgcd(a,b)b+gcd(a,b)b)modgcd(a,b)b。
正整数解 xmin=(x0modgcd(a,b)b+gcd(a,b)b−1)modgcd(a,b)b+1。
求 ymin 时将 x0 替换成 y0,gcd(a,b)b 替换成 gcd(a,b)a 即可。
最大解:
xmax=ac−b⋅ymin,ymax=bc−a⋅xmin。
是否存在正整数解(x,y 均为正整数):ymax>0。
正整数解的个数:gcd(a,b)bxmax−xmin+1。
二、费马小定理及其求逆元方法
1.费马小定理
在 p 为素数且 gcd(a,p)=1 的情况下:
ap−1≡1(modp)
2.逆元
若
a⋅b≡1(modn)
则 a,b 互为模 n 意义下的乘法逆元。
逆元存在的充要条件是 gcd(a,n)=1。
逆元存在的必要性:
amodp+bmodp=(a+b)modpamodp−bmodp=(a−b)modpamodp⋅bmodp=abmodpbmodpamodp=bamodp
故此需将除法转化为乘法。
逆元的求法
注意到
a⋅ap−2=ap−1≡1(modp)
由逆元的唯一性可得 a 在模 p 意义下的乘法逆元为 ap−2,可用快速幂求解。
因有 ap−2≡a−1,故此逆元常被称为数论倒数。
逆元唯一性证明
若 b1,b2 都是 a 的逆元,则 ab1≡ab2≡1(modp),
两边同乘 b1 得 b1≡b2(modp),故逆元唯一。
三、组合数学基础
1.加乘原理
加法原理:
对于一件事,有 n 类完成办法,令 ai 表示完成第 i 种办法的方案数,则总共完成办法为 i=1∑nai。
乘法原理:
对于一件事,有 n 个完成步骤,令 ai 表示完成第 i 个步骤的方案数,则总共完成办法为 i=1∏nai。
2.排列与组合
排列数的定义:
在 n 个不同的数中取出 m(m≤n) 个,按任意顺序排列。
排列方案的总数即为排列数,记作 Anm 或 Pnm,下文普遍采用 Anm。
计算公式:
Anm=i=0∏m−1(n−i)=(n−m)!n!
全排列:
Ann=i=0∏n−1(n−i)=n!
这是排列数的一个特殊情况。
公式可以理解为第一个位置可以选 n 个,第二个可以选 n−1 个,以此类推,第 m 个可以选 n−m+1 个。
组合数的定义
在 n 个不同的数中取出 m(m≤n) 个,组成一个集合。
集合的总数即为组合数,记作 Cnm 或 (mn),下文普遍使用 (mn)。
计算公式:
(mn)=m!Anm=m!(n−m)!n!
公式可以理解为,在 Anm 的基础上,(mn) 并不关心两个元素之间的顺序,所以除以 m 个元素的全排列 m! 即可。
特别地,对于 m>n 的情况,Anm=(mn)=0。
组合数公式:
Pascal 恒等式
(mn)=(mn−1)+(m−1n−1)
Lucas 定理
(mn)≡(mmodpnmodp)⋅(⌊m/p⌋⌊n/p⌋)(modp)
排列组合基础部分常用公式
(1)n 个相同元素,分成 k 组,每组至少一个,求方案数。
考虑将 k−1 块板子插入至 n−1 个空中,显然答案为 (k−1n−1)。
(2)n 个相同元素,分成 k 组,每组数量无限制,求方案数。
考虑先拿来 k 个元素,此时将(2)转化为(1),易得答案为 (nn+k−1)。
(3)n 个相同元素,分成 k 组,每组至少 ai 个,求方案数。
考虑拿来 ∑ai 个元素,每个分 ai 个,转化至(2),再使用(2)的公式可得答案为 (n−∑ai+k−1n−∑ai)。
(4)在 n 个连续的整数中选 k 个,两两不相邻的选法有 (kn−k+1) 种。
(5)n 个不相同的物体排列成一个圆,方法有 (n−1)! 种。
(6)n 个任意元素排列方式有 n1!⋅n2!⋯nk!n! 种。
补充一下二项式定理的内容,证明可以采用数学归纳法解决,这里不多赘述。
(a+b)n=k=0∑n(kn)an−kbk
3.容斥原理
设 U 中元素有 n 种不同的属性,第 i 种称为 Pi,拥有属性 Pi 的构成集合 Si,则:
i=1⋃nSi=i∑∣Si∣−i<j∑∣Si∩Sj∣+i<j<k∑∣Si∩Sj∩Sk∣−⋯+(−1)n−1∣S1∩S2∩⋯∩Sn∣
四、数论常用特殊函数
求 1 到 n 之间的与 n 互质的数的个数:
ϕ(n)=n⋅p∣n∏(1−p1)
求 n 的正约数之和:
σ(n)=p∣n∏i=0∑epi
其中 p 为 n 的不同质因子,e 为该质因子的指数。
卡特兰数:
Cn=n+14n−2⋅Cn−1
应用:出栈序列数、二叉树形态数、括号序列等
错排问题(全部对不上):
Dn=(n−1)(Dn−1+Dn−2)D1=0,D2=1
有帮助,赞一个