初等数论初探

终于肝完了,感觉比我肝原神里面的任务还累!幸好我这个原魔玩家的肝够用哈哈哈!

数论是非常重要的知识点,同时也是一个可能较无趣的知识点 (但是咱们还是得学呀艹),所以这篇博客就来讨论一下一些非常简单的数论入门知识(终于打开了尘封已久的博客)

一、关于整除

1、定义:

a , b ∈ Z a,b\in \mathbb{Z} a,bZ a ≠ 0 a\not=0 a=0,如果 ∃ \exists 一个 q ∈ Z q\in \mathbb{Z} qZ,使得 a × q = b a×q=b a×qb,则称 b b b能够被 a a a整除,记作 a ∣ b a \mid b ab,否则为 a ∤ b a \nmid b ab
(啊定义是不是肥肠地简单)

2、性质:

(1)、传递性

如果 a ∣ b a \mid b ab b ∣ c b \mid c bc,则一定有 a ∣ c a \mid c ac(这真的不能写易证吗)

证明:
∵ a ∣ b \because a \mid b ab,令 a x = b ax = b ax=b x ∈ Z x \in \mathbb{Z} xZ x ≠ 0 x \not= 0 x=0
∵ b ∣ c \because b \mid c bc,令 b y = c by = c by=c y ∈ Z y \in \mathbb{Z} yZ y ≠ 0 y \not= 0 y=0
∴ a x y = c \therefore axy = c axy=c,即 a ∣ c a \mid c ac

(2)、不知道叫什么性

a ∣ b a \mid b ab a ∣ c a \mid c ac    ⟺    \iff ∀ \forall 整数 x , y x,y x,y,有 a ∣ ( b x + c y ) a \mid (bx + cy) a(bx+cy)

证明
∵ a ∣ b \because a \mid b ab,令 a s = b as = b as=b s ∈ Z s \in \mathbb{Z} sZ s ≠ 0 s \not= 0 s=0
∵ a ∣ c \because a \mid c ac,令 a t = c at = c at=c t ∈ Z t \in \mathbb{Z} tZ t ≠ 0 t \not= 0 t=0
∵ b x + c y = a s x + a t y = a ( s x + t y ) \because bx + cy = asx + aty = a(sx + ty) bx+cy=asx+aty=a(sx+ty)
∴ a ∣ a ( s x + t y ) ⇒ a ∣ ( b x + c y ) \therefore a \mid a(sx + ty) \Rightarrow a \mid (bx + cy) aa(sx+ty)a(bx+cy)

(3)、还是不知道叫什么性

m ∈ Z m \in \mathbb{Z} mZ m ≠ 0 m \not= 0 m=0,则 a ∣ b a \mid b ab 等价于 m a ∣ m b ma \mid mb mamb

证明:(易证)
∵ a ∣ b \because a \mid b ab,令 a x = b ax = b ax=b x ∈ Z x \in \mathbb{Z} xZ x ≠ 0 x \not= 0 x=0
∴ a x m = b m \therefore axm = bm axm=bm,即 x a m = b m xam = bm xam=bm
∴ a m ∣ b m \therefore am \mid bm ambm

(4)、也不知道叫什么性

设整数 x , y x,y x,y满足下式: a x + b y = 1 ax + by = 1 ax+by=1 a ∣ n a \mid n an b ∣ n b \mid n bn,那么 a × b ∣ n a × b \mid n a×bn

证明:
∵ a ∣ n , b ∣ n \because a \mid n,b \mid n an,bn
∴ n = s a = t b \therefore n =sa = tb n=sa=tb s , t ∈ Z s,t \in \mathbb{Z} s,tZ s , t ≠ 0 s,t \not= 0 s,t=0
∵ a , b ≠ 0 \because a,b \not= 0 a,b=0 a x + b y = 1 ax + by = 1 ax+by=1
∴ \therefore a x + b y a b ax + by \over ab abax+by 1 a b 1 \over ab ab1,即 x b x \over b bx + + + y a y \over a ay = = = 1 a b 1 \over ab ab1
∴ \therefore n a b n \over ab abn = = = ( ( ( x b x \over b bx + + + y a y \over a ay ) n = )n= )n= n x b nx \over b bnx + + + n y a ny \over a any = = = t b x b tbx \over b btbx + + + s a y a say \over a asay = = = t x + s y tx+sy tx+sy
∵ t x + s y ∈ Z \because tx + sy \in \mathbb{Z} tx+syZ
∴ \therefore n a b n \over ab abn ∈ Z \in \mathbb{Z} Z,即 a × b ∣ n a × b \mid n a×bn

(5)、依旧不知道叫什么性

b = q × d + c b = q × d + c b=q×d+c,那么 d ∣ b d \mid b db    ⟺    \iff d ∣ c d \mid c dc q ∈ Z q \in \mathbb{Z} qZ q ≠ 0 q \not= 0 q=0
即证明 d ∣ b d \mid b db的充要条件为 d ∣ c d \mid c dc

证明:
⇒ \Rightarrow 的证明)(也就是充分条件的证明拉~):
∵ d ∣ b \because d \mid b db
∴ d y = b \therefore dy = b dy=b y ∈ Z y \in \mathbb{Z} yZ y ≠ 0 y \not= 0 y=0
∴ d y = d q + c \therefore dy = dq + c dy=dq+c
∴ d y − d q = c \therefore dy - dq = c dydq=c
∴ d ( y − q ) = c \therefore d(y - q) = c d(yq)=c
∴ d ∣ c \therefore d \mid c dc
⇐ \Leftarrow 的证明)(也就是必要条件的证明拉~):
∵ d ∣ c \because d \mid c dc
∴ d x = c \therefore dx = c dx=c x ∈ Z x \in \mathbb{Z} xZ x ≠ 0 x \not= 0 x=0
∴ b = q d + x d = ( q + x ) d \therefore b = qd + xd = (q + x)d b=qd+xd=(q+x)d
∴ d ∣ b \therefore d \mid b db
上面两个证明揉在一起,不就是    ⟺    \iff (充要条件)的证明了吗~

好了,关于整除的最基本的数论知识就介绍得差不多拉~

二、关于模运算

1、定义:

对于整数 a , b a,b a,b,其中 b ≠ 0 b \not= 0 b=0,求 a a a除以 b b b的余数,称为 a a a b b b,记作 a a a m o d mod mod b b b。为了方便表示,我们接下来就将其记作 a % b a \% b a%b

2、性质:

(1)、分配律

1): ( a + b ) % c = ( a % c + b % c ) % c (a + b)\%c=(a\%c+b\%c)\%c (a+b)%c=(a%c+b%c)%c
2): ( a − b ) % c = ( a % c − b % c + c ) % c (a-b)\%c=(a\%c-b\%c+c)\%c (ab)%c=(a%cb%c+c)%c
3): a b % c = ( a % c × b % c ) % c ab\%c=(a\%c×b\%c)\%c ab%c=(a%c×b%c)%c
4): a b a^b ab % c = ( a % c ) b \%c=(a\%c)^b %c=(a%c)b % c \%c %c

(2)、放缩性

1):如果 a % b = c a \% b = c a%b=c d ∈ Z d \in \mathbb{Z} dZ d ≠ 0 d \not= 0 d=0,则 ( a d ) % ( b d ) = c d (ad)\%(bd)=cd (ad)%(bd)=cd

证明:
b s + c = a bs + c = a bs+c=a s ∈ Z s \in \mathbb{Z} sZ s ≠ 0 s \not= 0 s=0
∴ b s d + c d = a d \therefore bsd + cd = ad bsd+cd=ad
∴ b d × s + c d = a d \therefore bd × s + cd = ad bd×s+cd=ad
∴ ( a d ) % ( b d ) = c d \therefore (ad)\%(bd)=cd (ad)%(bd)=cd

2):如果 a % b = c a \% b = c a%b=c d ∣ a d \mid a da d ∣ b d \mid b db,则 a d a \over d da % \% % b d b \over d db = = = c d c \over d dc

证明:
b s + c = a bs + c = a bs+c=a s ∈ Z s \in \mathbb{Z} sZ s ≠ 0 s \not= 0 s=0
∴ \therefore b d b \over d db × × × s + s+ s+ c d c \over d dc = = = a d a \over d da,即 a d a \over d da % \% % b d b \over d db = = = c d c \over d dc

一些小证明:

1):若一个数的末尾数字能够被2整除,则这个数一定能够被2整除(易证

证明:
设这个数为 a a a,我们要证明的是:若 2 ∣ a % 10 2 \mid a \% 10 2a%10 ⇒ \Rightarrow 2 ∣ a 2 \mid a 2a
再设 x = a % 10 x = a \% 10 x=a%10 y = ( a − a % 10 ) ÷ 10 y = (a - a \% 10) ÷ 10 y=(aa%10)÷10,则 a = 10 × y   +   x a = 10 × y\ +\ x a=10×y + x
∴ a % 2 = \therefore a \% 2 = a%2= ( 10 × y ) % 2 (10 × y) \% 2 (10×y)%2 +   x +\ x + x % 2 \%2 %2
∵ 2 ∣ x \because 2 \mid x 2x且易得 2 ∣ ( 10 × y ) 2 \mid (10 × y) 2(10×y)
∴ 2 ∣ a \therefore 2 \mid a 2a

其它的小练习:
Number.1:若一个数的末两位数字能够被4整除,则这个数一定能够被4整除
Number.2:若一个数的末三位数字能够被8整除,则这个数一定能够被8整除

2):若一个数的各个数位之和能够被3整除,则这个数一定能被3整除

证明:
假设有一个三位数 a b c ‾ \overline{abc} abc,我们要证明的是:若 ( a + b + c ) % 3 = 0 (a + b + c) \% 3 = 0 (a+b+c)%3=0 ⇒ \Rightarrow a b c ‾ % 3 = 0 \overline{abc}\%3 = 0 abc%3=0
我们知道这个三位数还可以表示为 a × ( 99 + 1 ) + b × ( 9 + 1 ) + c a × (99 + 1) + b × (9 + 1) + c a×(99+1)+b×(9+1)+c,所以 a b c ‾ % 3 = ( a × ( 99 + 1 ) + b × ( 9 + 1 ) + c ) % 3 = ( 99 a + 9 b + a + b + c ) % 3 = ( a + b + c ) % 3 \overline{abc}\%3 = (a × (99 + 1) + b × (9 + 1) + c)\%3 = (99a+9b+a+b+c)\%3 = (a+b+c)\%3 abc%3=(a×(99+1)+b×(9+1)+c)%3=(99a+9b+a+b+c)%3=(a+b+c)%3
多位数时同理。

一个推论:若一个数的各个数位之和能够被9整除,则这个数一定能被9整除(留给读者自己证明吧)

3):若一个数的奇数位减去偶数位的差的绝对值(从左往右或从右往左均可)能够被11整除,则这个数一定能被11整除

证明:
假设有一个五位数 a b c d e ‾ \overline{abcde} abcde并且 a + c + e > b + d a+c+e>b+d a+c+e>b+d,我们要证明的是:若 ( a + c + e − b − d ) % 11 = 0 (a+c+e-b-d)\%11=0 (a+c+ebd)%11=0 ⇒ \Rightarrow a b c d e ‾ % 11 = 0 \overline{abcde}\%11=0 abcde%11=0
我们知道这个五位数还可以表示为 a × ( 9999 + 1 ) + b × ( 1001 − 1 ) + c × ( 99 + 1 ) + d × ( 11 − 1 ) + e a × (9999 + 1) + b × (1001 - 1) + c × (99 + 1) + d × (11 - 1) + e a×(9999+1)+b×(10011)+c×(99+1)+d×(111)+e,所以 a b c d e ‾ % 11 = ( a × ( 9999 + 1 ) + b × ( 1001 − 1 ) + c × ( 99 + 1 ) + d × ( 11 − 1 ) + e ) % 11 = ( 9999 a + 1001 b + 99 c + 11 d + a − b + c − d + e ) % 11 = ( a + c + e − b − d ) % 11 \overline{abcde}\%11 = (a × (9999 + 1) + b × (1001 - 1) + c × (99 + 1) + d × (11 - 1) + e)\%11 = (9999a+1001b+99c+11d+a-b+c-d+e)\%11 = (a+c+e-b-d)\%11 abcde%11=(a×(9999+1)+b×(10011)+c×(99+1)+d×(111)+e)%11=(9999a+1001b+99c+11d+ab+cd+e)%11=(a+c+ebd)%11
多位数时同理。

4):若一个数的末三位数字减去其它位数字的差的绝对值能够被7,11,13整除,则这个数一定能够被7,11,13整除

证明:
假设有一个八位数 a b c d e f g h ‾ \overline{abcdefgh} abcdefgh并且 a b c d e ‾ > f g h ‾ \overline{abcde}>\overline{fgh} abcde>fgh废话文学?),因为 7 × 11 × 17 = 1001 7 × 11 × 17 = 1001 7×11×17=1001,所以我们要证明的就是:若 ( a b c d e ‾ − f g h ‾ ) % 1001 = 0 (\overline{abcde}-\overline{fgh}) \% 1001 = 0 (abcdefgh)%1001=0 ⇒ \Rightarrow a b c d e f g h ‾ % 1001 = 0 \overline{abcdefgh} \% 1001 = 0 abcdefgh%1001=0
我们知道这个八位数还可以表示为 a b c d e ‾ × ( 1001 − 1 ) + f g h ‾ \overline{abcde} × (1001 - 1) + \overline{fgh} abcde×(10011)+fgh,所以 ( a b c d e ‾ − f g h ‾ ) % 1001 = ( a b c d e ‾ × ( 1001 − 1 ) + f g h ‾ ) % 1001 = ( a b c d e ‾ × 1001 − a b c d e ‾ + f g h ‾ ) % 1001 ) = − a b c d e ‾ + f g h ‾ (\overline{abcde}-\overline{fgh}) \% 1001 = (\overline{abcde} × (1001 - 1) + \overline{fgh}) \% 1001 = (\overline{abcde} × 1001 - \overline{abcde}+ \overline{fgh}) \% 1001) = - \overline{abcde}+ \overline{fgh} (abcdefgh)%1001=(abcde×(10011)+fgh)%1001=(abcde×1001abcde+fgh)%1001)=abcde+fgh。将其取绝对值即可。
多位数时同理。

All right,关于模运算的最基本的数论知识也介绍得差不多拉~

三、关于同余

1、定义:

m m m Z + \mathbb{Z}^+ Z+(正整数),若满足 m ∣ ( a − b ) m \mid (a - b) m(ab),则称 a a a b b b对模 m m m同余, a % m = b % m a \% m = b \% m a%m=b%m,记作 a ≡ b ( m o d   m ) a \equiv b(mod \ m) ab(mod m)。若 m ∤ ( a − b ) m \nmid (a - b) m(ab),则 a a a b b b对模 m m m一定不同余。
显然易得的是: a = b + k m a=b+km a=b+km k ∈ Z k \in \mathbb{Z} kZ k ≠ 0 k \not= 0 k=0 ⇒ a ≡ b ( m o d   m ) \Rightarrow a \equiv b(mod \ m) ab(mod m)
对同余的证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab)
∴ \therefore m s = a − b ms = a - b ms=ab s ∈ Z s \in \mathbb{Z} sZ s ≠ 0 s \not= 0 s=0
∴ a = m s + b \therefore a = ms + b a=ms+b
∴ a % m = ( m s + b ) % m = b % m \therefore a \% m = (ms + b) \% m = b\%m a%m=(ms+b)%m=b%m

2、性质:

1):自反性: a ≡ a ( m o d   m ) a \equiv a(mod\ m) aa(mod m)
2):对称性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m),则 b ≡ a ( m o d   m ) b \equiv a(mod\ m) ba(mod m)
3):传递性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m) b ≡ c ( m o d   m ) b \equiv c(mod\ m) bc(mod m),那么 a ≡ c ( m o d   m ) a \equiv c(mod\ m) ac(mod m)

关于3的证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab) m ∣ ( b − c ) m \mid (b - c) m(bc)
∴ m ∣ ( a − b ) + ( b − c ) \therefore m \mid (a - b) + (b - c) m(ab)+(bc),即 m ∣ ( a − c ) m \mid (a - c) m(ac)

4):同加性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m),那么 a + c ≡ b + c ( m o d   m ) a + c \equiv b + c(mod\ m) a+cb+c(mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab)
∴ m ∣ ( a − b ) + c − c \therefore m \mid (a - b) + c - c m(ab)+cc,即 m ∣ ( a + c ) − ( b + c ) m \mid (a + c) - (b + c) m(a+c)(b+c)

5):同减性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m),那么 a − c ≡ b − c ( m o d   m ) a - c \equiv b - c(mod\ m) acbc(mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab)
∴ m ∣ ( a − b ) − c + c \therefore m \mid (a - b) - c + c m(ab)c+c,即 m ∣ ( a − c ) − ( b − c ) m \mid (a - c) - (b - c) m(ac)(bc)

6):同乘性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m),那么 a c ≡ b c ( m o d   m ) ac \equiv bc(mod\ m) acbc(mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab)
∴ m ∣ ( a − b ) c \therefore m \mid (a - b)c m(ab)c,即 m ∣ ( a c − b c ) m \mid (ac - bc) m(acbc)

7):同除性:如果 a ≡ b ( m o d   m ) a \equiv b(mod\ m) ab(mod m) c ∣ a c \mid a ca c ∣ b c \mid b cb g c d ( c , m ) = 1 gcd(c,m)=1 gcd(c,m)=1,那么 a c a \over c ca ≡ \equiv b c b \over c cb ( m o d   m ) (mod\ m) (mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab)
∴ \therefore m k = a − b mk = a - b mk=ab,则 m k + b = a mk + b = a mk+b=a
∴ \therefore m c m \over c cm k   + k \ + k + b c b \over c cb = = = a c a \over c ca
∵ c ∣ a \because c \mid a ca c ∣ b c \mid b cb g c d ( c , m ) = 1 gcd(c,m) = 1 gcd(c,m)=1
∴ \therefore b c b \over c cb ∈ Z \in \mathbb{Z} Z a c a \over c ca ∈ Z \in \mathbb{Z} Z m c m \over c cm ∉ Z \notin \mathbb{Z} /Z
∵ \because m c m \over c cm k k k ∈ Z \in \mathbb{Z} Z
∴ \therefore k c k \over c ck ∈ Z \in \mathbb{Z} Z
∴ c ∣ k \therefore c \mid k ck,令 c x = k cx = k cx=k
∴ m c x + b = a \therefore mcx + b = a mcx+b=a
∴ \therefore m c x c mcx \over c cmcx + + + b c b \over c cb = = = a c a \over c ca
∴ m x \therefore mx mx + + + b c b \over c cb = = = a c a \over c ca
∴ \therefore a c a \over c ca ≡ \equiv b c b \over c cb ( m o d   m ) (mod\ m) (mod m)

8):同幂性:如果 a ≡ b ( m o d   m ) a \equiv b (mod \ m) ab(mod m) c ∈ Z + c \in \mathbb{Z}^+ cZ+,则 a c ≡ b c ( m o d   m ) a^c \equiv b^c (mod \ m) acbc(mod m)

证明:
∵ a ≡ b ( m o d   m ) \because a \equiv b (mod \ m) ab(mod m)
∴ a % m = b % m \therefore a \% m = b \% m a%m=b%m
∴ ( a % m ) c   %   m = ( b % m ) c   %   m \therefore (a \% m)^c \ \% \ m = (b \% m)^c \ \% \ m (a%m)c % m=(b%m)c % m
∴ a c   %   m = b c   %   m \therefore a^c \ \% \ m = b^c \ \% \ m ac % m=bc % m
∴ a c ≡ b c ( m o d   m ) \therefore a^c \equiv b^c (mod \ m) acbc(mod m)

9):如果 a ≡ b ( m o d   m ) a \equiv b (mod \ m) ab(mod m) c ≡ d ( m o d   m ) c \equiv d (mod \ m) cd(mod m),那么 a + c ≡ b + d ( m o d   m ) a + c \equiv b + d (mod \ m) a+cb+d(mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab) m ∣ ( c − d ) m \mid (c - d) m(cd)
∴ m ∣ ( a − b ) + ( c − d ) \therefore m \mid (a - b) + (c - d) m(ab)+(cd)
∴ m ∣ ( a + c ) − ( b + d ) \therefore m \mid (a + c) - (b + d) m(a+c)(b+d)
∴ a + c ≡ b + d ( m o d   m ) \therefore a + c \equiv b + d (mod \ m) a+cb+d(mod m)

10):如果 a ≡ b ( m o d   m ) a \equiv b (mod \ m) ab(mod m) c ≡ d ( m o d   m ) c \equiv d (mod \ m) cd(mod m),那么 a c ≡ b d ( m o d   m ) ac \equiv bd (mod \ m) acbd(mod m)

证明:
∵ m ∣ ( a − b ) \because m \mid (a - b) m(ab) m ∣ ( c − d ) m \mid (c - d) m(cd)
∴ m ∣ ( a − b ) ∗ c + ( c − d ) ∗ b \therefore m \mid (a - b) * c + (c - d) * b m(ab)c+(cd)b
∴ m ∣ a c − b c + b c − b d \therefore m \mid ac - bc + bc - bd macbc+bcbd,即 m ∣ a c − b d m \mid ac - bd macbd
∴ a c ≡ b d ( m o d   m ) \therefore ac \equiv bd (mod \ m) acbd(mod m)

11):如果 a % p = x a \% p = x a%p=x a % q = x a \% q = x a%q=x ( p , q ) = 1 (p,q) = 1 (p,q)=1,那么 a % ( p × q ) = x a \% (p × q) = x a%(p×q)=x

证明:
a = p k 1 + x = q k 2 + x a = pk_1 + x = qk_2 + x a=pk1+x=qk2+x
∴ a − x \therefore a - x ax p p p q q q的公倍数
∵ ( p , q ) = 1 \because (p,q) = 1 (p,q)=1
∴ l c m ( p , q ) = p × q \therefore lcm(p,q) = p × q lcm(p,q)=p×q
∴ p × q ∣ a − x \therefore p × q \mid a - x p×qax
∴ p × q × s = a − x \therefore p × q × s = a - x p×q×s=ax,即 p × q × s + x = a p × q × s + x = a p×q×s+x=a
∴ a % ( p × q ) = x \therefore a \% (p × q) = x a%(p×q)=x

彳亍了,在狂肝了几小时后终于将同余的最基本的数论知识也打完拉

四、关于排列组合

1、排列的定义:

给定n个数的元素中,取出指定m个数的元素进行排序。记作 A n m A_{n}^{m} Anm,也可记作 A ( n , m ) A(n,m) A(n,m)

计算方法: A n m = n × ( n − 1 ) × ( n − 2 ) × … × ( n − m + 1 ) = A_{n}^{m} = n × (n - 1) × (n - 2) × … × (n - m + 1) = Anm=n×(n1)×(n2)××(nm+1)= n ! ( n − m ) ! n! \over (n - m)! (nm)!n!

2、组合的定义:

给定n个数的元素中,取出指定m个数的元素,但不考虑排序。记作 C n m C_{n}^{m} Cnm,也可记作 C ( n , m ) C(n,m) C(n,m)

计算方法:
C n m = C_n^m = Cnm= A n m m ! A_n^m \over m! m!Anm = = = n ! ( n − m ) ! m ! n! \over (n - m)!m! (nm)!m!n!
(其实组合相对于排列就只是不考虑顺序,比如1,2,3和2,3,1,组合认为它们是一种方法,而排列认为它们是两种方法,所以只需要将排列的总方案数除以全排列的个数(即发生重复的个数) m ! m! m!即可)

3、8大经典例题:

以下所有题,均有 n n n个小球和 m m m个盒子

1):球相同,盒不同,无空盒

解法:(隔板法)
假设有这些小球:oooo…ooo
如果我们要把这 n n n个小球分到 m m m个盒子里中
就相当于在这 n n n个小球里面插入 m − 1 m-1 m1个隔板
举个栗子:(当 n = 4 n=4 n=4 m = 2 m=2 m=2时)
小球:oooo
我们只需要在它们中间插入 2 − 1 = 1 2 - 1 = 1 21=1个隔板就可以将它们分为2堆。
例如:o|ooo 或者 oo|oo
我们又知道,一共有 n − 1 n - 1 n1个位置可以放隔板(因为没有空盒)。
所以即求:在 n − 1 n-1 n1个位置中放入 m − 1 m-1 m1个隔板的方案总数。答案为 C n − 1 m − 1 C_{n-1}^{m-1} Cn1m1

2):球相同,盒不同,可空盒

解法:(依旧是隔板法)
这个问题与上一个问题唯一的一个区别就在于这道题允许空盒。
所以在上一道题的基础上,我们可以先将每一个盒子里面都装进去一个虚球
这样就保证了每一个盒子里面都有球,就变成了第一道题的做法,答案为 C n + m − 1 m − 1 C_{n+m-1}^{m-1} Cn+m1m1
为什么这样做是正确的呢?
因为我们认为虚球不算球
所以如果有一个盒子只有一个虚球,那我们认为这个盒子没有球。
应该懂了吧

3):球不同,盒相同,无空盒

解法:
我们设答案为 d p [ n ] [ m ] dp[n][m] dp[n][m]
对于第 i i i个球,它一共有两种去向,一个是自己独占一个盒子,另一个是与别人一起占一个盒子
所以可以很轻易地列出动态转移方程 d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] + d p [ i − 1 ] [ j ] ∗ j dp[i][j] = dp[i-1][j-1]+dp[i-1][j]*j dp[i][j]=dp[i1][j1]+dp[i1][j]j
关于 d p [ i − 1 ] [ j − 1 ] dp[i-1][j-1] dp[i1][j1],是它独占一个盒子的情况。
关于 d p [ i − 1 ] [ j ] ∗ j dp[i-1][j]*j dp[i1][j]j,是它与别人一起占一个盒子的情况。因为该题球不同,所以它占这 j j j个盒子的哪一个盒子都是一种不同的情况,因此要乘上一个盒子总数 j j j
初始化 d p [ 1 ] [ 1 ] = 1 dp[1][1] = 1 dp[1][1]=1
(这其实就是第二类斯特林数)

4):球不同,盒相同,可空盒

解法:
与上一题类似,但这个问题允许空盒,那答案也只需要做一点点修改。
答案: ∑ i = 1 m d p [ n ] [ i ] \sum_{i=1}^{m}dp[n][i] i=1mdp[n][i]
d p [ n ] [ 1 ] dp[n][1] dp[n][1]即表示有 m − 1 m - 1 m1个空盒时的情况, d p [ n ] [ 2 ] dp[n][2] dp[n][2]即表示有 m − 2 m - 2 m2个空盒时的情况……以此类推。
因为球不同,且盒子的个数也不同,所以一定没有重复计算的情况。

5):球不同,盒不同,无空盒

解法:
与第3题类似,这道题如果盒子不同的话,那么就需要考虑顺序。
我们在介绍排列组合的概念时就已经说明了在 m m m个数组成的排列中,发生重复的个数为 m ! m! m!。此题需要将这些重复全部算进去(因为要考虑顺序),所以答案为: d p [ n ] [ m ] × m ! dp[n][m] × m! dp[n][m]×m!

6):球不同,盒不同,可空盒

解法:
这一题因为球和盒子均不同,所以只需要考虑将第 i i i个球放在哪个盒子里面,每一个球都有 m m m种放法。又因为乘法原理可得答案为: m n m^n mn

7):球相同,盒相同,无空盒

解法:
我们可以先将 m m m个盒子中均放上一个小球,就还剩下 n − m n - m nm个小球,这些小球都可以放在这 m m m个盒子里。所以动态转移方程为: ∑ i = 2 n ∑ j = 2 m ∑ k = 1 j d p [ i − j ] [ k ] ( j < i ) \sum_{i=2}^{n}\sum_{j = 2}^{m}\sum_{k = 1}^{j}dp[i-j][k](j < i) i=2nj=2mk=1jdp[ij][k](j<i)
初始化: d p [ i ] [ 1 ] = d p [ i ] [ i ] = 1 ( 1 ≤ i ≤ n ) dp[i][1] = dp[i][i] = 1(1 \leq i \leq n) dp[i][1]=dp[i][i]=1(1in)

8):球相同,盒相同,可空盒

解法:
与第2题的虚球思想类似,我们只需要提前将 m m m个盒子里均放上一个虚球,再套用第7题的方法就可以了。

非常棒,你已经将很多的数论基础知识耐心地看完了,马上就快成功了,加油!

五、gcd和lcm

1、gcd的定义:

a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak k k k Z + \mathbb{Z}^+ Z+,如果 ∃ \exists 一个 Z + d \mathbb{Z}^+d Z+d,使得 d ∣ a 1 , d ∣ a 2 , d ∣ a 3 … d ∣ a k d \mid a_1,d \mid a_2,d \mid a_3…d \mid a_k da1,da2,da3dak,那么 d d d a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak的公因数。其中最大的 d d d a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak的最大公因数

2、lcm的定义:

a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak k k k Z + \mathbb{Z}^+ Z+,如果 ∃ \exists 一个 Z + d \mathbb{Z}^+d Z+d,使得 a 1 ∣ d , a 2 ∣ d , a 3 ∣ d … a k ∣ d a_1 \mid d,a_2 \mid d,a_3 \mid d…a_k \mid d a1d,a2d,a3dakd,那么 d d d a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak的公倍数。其中最小的 d d d a 1 , a 2 , a 3 … a k a_1,a_2,a_3…a_k a1,a2,a3ak的最小公倍数

3、一个小定理:

g c d ( a , b ) × l c m ( a , b ) = a × b gcd(a,b)×lcm(a,b)=a×b gcd(a,b)×lcm(a,b)=a×b

证明:
a , b a,b a,b进行质因子分解,设 a , b a,b a,b的质因子集合并集为 p 1 , p 2 , p 3 … p n {p_1,p_2,p_3…p_n} p1,p2,p3pn,那么:
a = p 1 k 1 × p 2 k 2 × … × p n k n , b = p 1 j 1 × p 2 j 2 × … × p n j n a = p_1^{k_1} × p_2^{k_2} × … × p_n^{k_n},b = p_1^{j_1} × p_2^{j_2} × … × p_n^{j_n} a=p1k1×p2k2××pnkn,b=p1j1×p2j2××pnjn( k i , j i ∈ Z k_i,j_i \in \mathbb{Z} ki,jiZ k i , j i ≠ 0 k_i,j_i \not= 0 ki,ji=0)
∴ g c d ( a , b ) = p 1 m i n ( k 1 , j 1 ) × p 2 m i n ( k 2 , j 2 ) × … × p n m i n ( k n , j n ) \therefore gcd(a, b) = p_1^{min(k_1,j_1)} × p_2^{min(k_2,j_2)} × … × p_n^{min(k_n,j_n)} gcd(a,b)=p1min(k1,j1)×p2min(k2,j2)××pnmin(kn,jn)
l c m ( a , b ) = p 1 m a x ( k 1 , j 1 ) × p 2 m a x ( k 2 , j 2 ) × … × p n m a x ( k n , j n ) lcm(a, b) = p_1^{max(k_1,j_1)} × p_2^{max(k_2,j_2)} × … × p_n^{max(k_n,j_n)} lcm(a,b)=p1max(k1,j1)×p2max(k2,j2)××pnmax(kn,jn)
∵ m i n ( k i , j i ) + m a x ( k i , j i ) = k i + j i \because min(k_i,j_i) + max(k_i,j_i) = k_i + j_i min(ki,ji)+max(ki,ji)=ki+ji
∴ g c d ( a , b ) × l c m ( a , b ) = p 1 k 1 + j 1 × p 2 k 2 + j 2 × … × p n k n + j n \therefore gcd(a,b) × lcm(a,b) = p_1^{k_1+j_1} × p_2^{k_2+j_2} × … × p_n^{k_n+j_n} gcd(a,b)×lcm(a,b)=p1k1+j1×p2k2+j2××pnkn+jn
a × b = p 1 k 1 + j 1 × p 2 k 2 + j 2 × … × p n k n + j n a × b = p_1^{k_1+j_1} × p_2^{k_2+j_2} × … × p_n^{k_n+j_n} a×b=p1k1+j1×p2k2+j2××pnkn+jn
∴ g c d ( a , b ) × l c m ( a , b ) = a × b \therefore gcd(a,b)×lcm(a,b)=a×b gcd(a,b)×lcm(a,b)=a×b

4、辗转相除法(欧几里得定理):

g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b) = gcd(b, a \% b) gcd(a,b)=gcd(b,a%b)

证明:
g c d ( a , b ) = p gcd(a, b) = p gcd(a,b)=p ⇒ \Rightarrow a = k p , b = q p , g c d ( k , q ) = 1 a = kp,b = qp,gcd(k,q)=1 a=kp,b=qp,gcd(k,q)=1
∴ a % b = ( k p ) % ( g p ) = ( k % g ) p \therefore a \% b = (kp) \% (gp) = (k \% g)p a%b=(kp)%(gp)=(k%g)p
∴ g c d ( b , a % b ) = g c d ( g p , ( k % g ) p ) \therefore gcd(b, a \% b) = gcd(gp, (k \% g)p) gcd(b,a%b)=gcd(gp,(k%g)p)
∵ g c d ( g , k % g ) = 1 \because gcd(g, k \% g) = 1 gcd(g,k%g)=1
∴ g c d ( b , a % b ) = g c d ( g p , ( k % g ) p ) = p \therefore gcd(b, a \% b) = gcd(gp, (k \% g)p) = p gcd(b,a%b)=gcd(gp,(k%g)p)=p
∴ g c d ( a , b ) = g c d ( b , a % b ) \therefore gcd(a, b) = gcd(b, a \% b) gcd(a,b)=gcd(b,a%b)

5、扩展欧几里得(exgcd)

在已知 Z a , b \mathbb{Z}a,b Za,b的情况下求不定方程 a x + b y = g c d ( a , b ) ax + by = gcd(a,b) ax+by=gcd(a,b)的一组整数解。对于 x , y ∈ Z x,y \in \mathbb{Z} x,yZ,解通常为一正一负。 e x g c d exgcd exgcd可以求出上述方程中 ∣ x ∣ + ∣ y ∣ |x| + |y| x+y最小的一组解。

推导过程:
a x 1 + b y 1 = g c d ( a , b ) , b x 2 + ( a % b ) y 2 = g c d ( b , a % b ) ax_1 + by_1 = gcd(a,b),bx_2+(a\%b)y_2=gcd(b,a\%b) ax1+by1=gcd(a,b),bx2+(a%b)y2=gcd(b,a%b)
由欧几里得定理可得 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b) = gcd(b, a \% b) gcd(a,b)=gcd(b,a%b)
∴ a x 1 + b y 1 = b x 2 + ( a % b ) y 2 \therefore ax_1 + by_1 = bx_2 + (a \% b)y_2 ax1+by1=bx2+(a%b)y2
∵ a % b = a − b k \because a \% b = a - bk a%b=abk k ∈ Z k \in \mathbb{Z} kZ
k = ⌊ k = \lfloor k= a b a \over b ba ⌋ \rfloor
∴ a x 1 + b y 1 = b x 2 + ( a − \therefore ax_1 + by_1 = bx_2 + (a - ax1+by1=bx2+(a b b b ⌊ \lfloor a b a \over b ba ⌋ \rfloor ) y 2 y_2 y2
整理得: a x 1 + b y 1 = a y 2 + b ( x 2 − ax_1 + by_1 = ay_2 + b(x_2 - ax1+by1=ay2+b(x2 ⌊ \lfloor a b a \over b ba ⌋ \rfloor y 2 y_2 y2)
∴ x 1 = y 2 , y 1 = x 2 − \therefore x_1 = y_2,y_1 = x_2 - x1=y2,y1=x2 ⌊ \lfloor a b a \over b ba ⌋ \rfloor y 2 y_2 y2
∴ ( x 1 , y 1 ) \therefore (x_1,y_1) (x1,y1)这组解是由 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)这组解推来的
不难发现:当 ( x n , y n ) (x_n,y_n) (xn,yn)关于 g c d ( a , 0 ) gcd(a,0) gcd(a,0)时, a x n + b y n = g c d ( a , 0 ) = a ax_n + by_n = gcd(a,0) = a axn+byn=gcd(a,0)=a,此时可得出 a = a , b = 0 a=a,b=0 a=a,b=0
∴ a x n + b y n = a \therefore ax_n + by_n = a axn+byn=a ⇒ \Rightarrow x n = 1 , y n = ∀ Z x_n = 1,y_n = \forall \mathbb{Z} xn=1,yn=Z
∴ ∃ x n = 1 , y n = 0 \therefore \exists x_n = 1,y_n = 0 xn=1,yn=0,这组边界整数解,可得出 x 1 , y 1 x_1,y_1 x1,y1

代码:

int exgcd(int a, int b, int &ans1, int &ans2) {
	if(b == 0) {
		ans1 = 1, ans2 = 0;
		return a;
	}
	int ans = exgcd(b, a % b, ans2, ans1);
	ans2 -= ans1 * (a / b);
	return ans;
}

六、裴蜀定理

1、定理:

对于不定方程 a x + b y = m ax + by = m ax+by=m,其有解( a , b , m a,b,m a,b,m为常数)的充要条件为: g c d ( a , b ) ∣ m gcd(a,b) \mid m gcd(a,b)m

证明:(充分条件)
∵ a x + b y = m \because ax + by = m ax+by=m有解
∴ \therefore Z x , y \mathbb{Z}x,y Zx,y使得 a x + b y = m ax + by = m ax+by=m
∵ g c d ( a , b ) ∣ a \because gcd(a, b) \mid a gcd(a,b)a g c d ( a , b ) ∣ b gcd(a,b) \mid b gcd(a,b)b
∴ g c d ( a , b ) ∣ ( a x + b y ) \therefore gcd(a,b) \mid (ax + by) gcd(a,b)(ax+by)
∴ g c d ( a , b ) ∣ m \therefore gcd(a,b) \mid m gcd(a,b)m

证明:(必要条件)
∵ g c d ( a , b ) ∣ m \because gcd(a,b) \mid m gcd(a,b)m
∴ \therefore 即证 a x + b y = g c d ( a , b ) ax + by = gcd(a,b) ax+by=gcd(a,b)
根据exgcd可易证这个结论

2、引理:

对于 ∀ x , y ∈ Z \forall x,y \in \mathbb{Z} x,yZ,函数 f ( x , y ) = a x + b y f(x,y) = ax + by f(x,y)=ax+by的最小 Z + \mathbb{Z}^+ Z+取值为 g c d ( a , b ) gcd(a,b) gcd(a,b)

证明:
f ( x , y ) = a x + b y = m f(x,y) = ax + by = m f(x,y)=ax+by=m
则根据裴蜀定理可得, g c d ( a , b ) ∣ m gcd(a,b) \mid m gcd(a,b)m
∴ \therefore m = g c d ( a , b ) m = gcd(a,b) m=gcd(a,b)时,取得满足条件的最小 Z + \mathbb{Z}^+ Z+

3、推论:

1):若 a , b ∈ Z + a,b \in \mathbb{Z}^+ a,bZ+ g c d ( a , b ) = 1 gcd(a,b) = 1 gcd(a,b)=1,则 ∄ k ( 0 < k < b ) \nexists k(0 < k < b) k(0<k<b),使得 b ∣ a k b \mid ak bak

证明:
b ∣ a k b \mid ak bak,则 a k ak ak中一定含有 b b b的所有质因子
∵ g c d ( a , b ) = 1 \because gcd(a, b) = 1 gcd(a,b)=1
∴ a \therefore a a中不可能含有 b b b的任意质因子
∴ k \therefore k k中一定含有 b b b的所有质因子
∴ k ∣ b \therefore k \mid b kb
∵ 0 < k < b \because 0 < k < b 0<k<b
∴ \therefore 矛盾

2):若 a , b ∈ Z + a,b \in \mathbb{Z}^+ a,bZ+ g c d ( a , b ) = 1 gcd(a,b) = 1 gcd(a,b)=1,则 0 , a , 2 a , 3 a … ( b − 1 ) a 0,a,2a,3a…(b - 1)a 0,a,2a,3a(b1)a这些数分别模 b b b ∄ \nexists 两个相同的结果

证明:
∃ \exists 两个不同的数 i × a , j × a i × a,j × a i×a,j×a 0 < j < i < b 0 < j < i < b 0<j<i<b)且 i × a ≡ j × a ( m o d   b ) i × a \equiv j × a(mod \ b) i×aj×a(mod b)
∴ i × a % b = j × a % b \therefore i × a \% b = j × a \% b i×a%b=j×a%b
∴ i × a % b − j × a % b = 0 \therefore i × a \% b - j × a \% b = 0 i×a%bj×a%b=0
∴ ( i − j ) × a % b = 0 \therefore (i - j) × a \% b = 0 (ij)×a%b=0 0 < i − j < b 0 < i - j < b 0<ij<b
k = i − j k = i - j k=ij,则有 a k % b = 0 ak \% b = 0 ak%b=0 0 < k < b 0 < k < b 0<k<b
∵ g c d ( a , b ) = 1 \because gcd(a,b) = 1 gcd(a,b)=1
∴ \therefore 与引理1矛盾

小知识:若 a , b ∈ Z + a,b \in \mathbb{Z}^+ a,bZ+ g c d ( a , b ) = 1 gcd(a,b) = 1 gcd(a,b)=1,则 0 , a , 2 a , 3 a … ( b − 1 ) a 0,a,2a,3a…(b - 1)a 0,a,2a,3a(b1)a这些数模 b b b的结果的集合 A = { 0 , 1 , 2 , … b − 2 , b − 1 } A = \{0,1,2,…b-2,b-1\} A={0,1,2,b2,b1},读者可以自己证明一下。

3):若 a , b ∈ Z + a,b \in \mathbb{Z}^+ a,bZ+ g c d ( a , b ) = 1 gcd(a,b) = 1 gcd(a,b)=1,则一定 ∃ k ∈ Z \exists k \in \mathbb{Z} kZ,使得 a k % b = 1 ak \% b = 1 ak%b=1

证明:
这个其实可以用引理2下面的小知识轻松解决

芜湖,新的一天,又学了新的知识,一起来看看吧~

七、费马小定理

1、定理:

p p p为质数,且 a % p ≠ 0 a \% p \not= 0 a%p=0,则有 a p − 1   %   p = 1 a^{p - 1} \ \% \ p = 1 ap1 % p=1

证明:
∵ ( a × 1 ) × ( a × 2 ) × ( a × 3 ) × … × ( a × ( p − 1 ) ) % p = a p − 1 × ( p − 1 ) !   %   p \because (a × 1) × (a × 2) × (a × 3) × … × (a × (p - 1)) \% p = a^{p - 1} × (p - 1)! \ \%\ p (a×1)×(a×2)×(a×3)××(a×(p1))%p=ap1×(p1)! % p
∵ p \because p p为质数且 p ∤ a p \nmid a pa
∴ g c d ( a , p ) = 1 \therefore gcd(a,p) = 1 gcd(a,p)=1
根据裴蜀定理引理2下面的小知识可得: ( a × 1 ) % p ,   ( a × 2 ) % p ,   ( a × 3 ) % p ,   …   ( a × ( p − 1 ) % p ) (a × 1) \% p ,\ (a × 2) \% p ,\ (a × 3) \% p, \ … \ (a × (p - 1) \% p) (a×1)%p, (a×2)%p, (a×3)%p,  (a×(p1)%p)互不相等且区间 S = [ 1 ,   p − 1 ] S = [1, \ p - 1] S=[1, p1]
∴ ( a × 1 ) × ( a × 2 ) × ( a × 3 ) × … × ( a × ( p − 1 ) ) % p = ( a × 1 ) % p × ( a × 2 ) % p × ( a × 3 ) % p × … × ( a × ( p − 1 ) ) % p = 1 × 2 × 3 × … × ( p − 1 ) % p = ( p − 1 ) !   %   p \therefore (a × 1) × (a × 2) × (a × 3) × … × (a × (p - 1)) \% p = (a × 1) \% p × (a × 2) \% p × (a × 3) \% p × … × (a × (p - 1)) \% p = 1 × 2 × 3 × … × (p - 1) \% p = (p - 1)! \ \% \ p (a×1)×(a×2)×(a×3)××(a×(p1))%p=(a×1)%p×(a×2)%p×(a×3)%p××(a×(p1))%p=1×2×3××(p1)%p=(p1)! % p
∴ a p − 1 × ( p − 1 ) !   %   p = ( p − 1 ) !   %   p \therefore a^{p - 1} × (p - 1)! \ \% \ p = (p - 1)! \ \% \ p ap1×(p1)! % p=(p1)! % p,即 a p − 1 × ( p − 1 ) ! ≡ ( p − 1 ) !   ( m o d   p ) a^{p - 1} × (p - 1)! \equiv (p - 1)! \ (mod \ p) ap1×(p1)!(p1)! (mod p)
∵ p \because p p为质数
∴ g c d ( ( p − 1 ) !   ,   p ) = 1 \therefore gcd((p - 1)! \ , \ p) = 1 gcd((p1)! , p)=1
∴ a p − 1 ≡ 1   ( m o d   p ) \therefore a^{p - 1} \equiv 1 \ (mod \ p) ap11 (mod p)

至于其它的应用,只能等下次喽~

八、乘法逆元

1、定义:

Z + a , n \mathbb{Z}^+a,n Z+a,n,如果 a x ≡ 1 ( m o d   n ) ax \equiv 1 (mod \ n) ax1(mod n),则称 x x x的最小 Z + \mathbb{Z}^+ Z+解为 a % n a \% n a%n的乘法逆元,表示为 i n v ( a ) inv(a) inv(a)

2、用处:

当我们要求 a b a \over b ba % p \% p %p的值时,如果 b b b过于大,普通的做法就会爆精度,所以我们只需要求出 b b b的乘法逆元 x x x,就可以将 a b a \over b ba转化成 a x ax ax

3、(也许是性质?

1):如果每个 Z a \mathbb{Z}a Za均有唯一的与之对应的乘法逆元 x x x,使得 a x ≡ 1 ( m o d   n ) ax \equiv 1 (mod \ n) ax1(mod n),其充要条件为 g c d ( a , n ) = 1 gcd(a,n) = 1 gcd(a,n)=1(懒得证了,显然易得)

2):设 k k k为关于 b b b的乘法逆元, g c d ( b , p ) = 1 gcd(b, p) = 1 gcd(b,p)=1,那么 a b a \over b ba % p = a k % p \% p = ak \% p %p=ak%p

证明:
由题可得:
b k ≡ 1 ( m o d   p ) ⇒ b k = p x + 1 bk \equiv 1(mod \ p) \Rightarrow bk = px + 1 bk1(mod p)bk=px+1
∴ k = \therefore k = k= p x + 1 b px + 1 \over b bpx+1
∴ a k % p = \therefore ak \% p = ak%p= a p x + a b apx + a \over b bapx+a %   p \% \ p % p
                = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =                = ( ( ( a p x b apx \over b bapx + + + a b a \over b ba ) % p ) \% p )%p
                = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =                = ( ( ( a p x b apx \over b bapx % p + \% p + %p+ a b a \over b ba % p \% p %p ) % p ) \% p )%p
                = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =                = ( p (p (p a x b ax \over b bax % p + \% p + %p+ a b a \over b ba % p \% p %p ) % p ) \% p )%p
                = \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =                = a b a \over b ba % p \% p %p

4、求逆元的方法

1):快速幂+费马小定理

推导:
p p p为质数,则由费马小定理可得: a p − 1 ≡ 1 ( m o d   p ) ⇒ a × a p − 2 ≡ 1 ( m o d   p ) a^{p - 1} \equiv 1(mod \ p) \Rightarrow a × a^{p - 2} \equiv 1(mod \ p) ap11(mod p)a×ap21(mod p) g c d ( a , p ) = 1 gcd(a,p) = 1 gcd(a,p)=1
∴ a × a p − 2 ≡ a × i n v ( a ) ( m o d   p ) ⇒ a p − 2 ≡ i n v ( a ) ( m o d   p ) \therefore a × a^{p - 2} \equiv a × inv(a) (mod \ p) \Rightarrow a^{p - 2} \equiv inv(a) (mod \ p) a×ap2a×inv(a)(mod p)ap2inv(a)(mod p)
∴ a p − 2 \therefore a^{p - 2} ap2 a a a关于 % p \% p %p的乘法逆元。

代码:

int qkpow(int a, int b) {
	if(b == 1) return a;
	if(b == 0) return 1;
	int ans = qkpow(a, b / 2) % mod;
	if(b & 1) return ans * ans % mod * a % mod;
	return ans * ans % mod; 
}
int inv(int i) {
	return qkpow(i, mod - 2) % mod;
}

2):扩展欧几里得(exgcd)

一句话:要求 a x ≡ 1 ( m o d   p ) ax \equiv 1(mod \ p) ax1(mod p)的最小 Z + \mathbb{Z}^+ Z+ x x x,即 a x − p y = 1 ax - py = 1 axpy=1 a , p a,p a,p互质)
所以只需要一个扩欧的模板即可。最后的 x x x要化负为正。

代码:

int exgcd(int a, int b, int &ans1, int &ans2) {
	if(b == 0) {
		ans1 = 1, ans2 = 0;
		return a;
	}
	int ans = exgcd(b, a % b, ans2, ans1);
	ans2 -= ans1 * (a / b);
	return ans;
}
int inv(int i) {
	int x, y;
	int sum = exgcd(i, mod, x, y);
	if(sum != 1) return -1; //判无解
	return (x % mod + mod) % mod; //化负为正
}

3):递推式

先上代码:

inv[1] = 1;
for(int i = 2; i <= n; i++) inv[i] = (p - p / i) % p * inv[p % i] % p;

推导:
t = ⌊ t = \lfloor t= p i p \over i ip ⌋ , k = p % i \rfloor,k = p \% i ,k=p%i
∴ p = i × t + k ⇒ i × t + k ≡ 0 ( m o d   p ) \therefore p = i × t + k \Rightarrow i × t + k \equiv 0(mod \ p) p=i×t+ki×t+k0(mod p)
∴ i × t ≡ − k ( m o d   p ) \therefore i × t \equiv -k(mod \ p) i×tk(mod p)
i n v [ i ] inv[i] inv[i] i i i对于 % p \% p %p的乘法逆元
∴ i × t × i n v [ i ] × i n v [ k ] = − k × i n v [ i ] × i n v [ k ] \therefore i × t × inv[i] × inv[k] = -k × inv[i] × inv[k] i×t×inv[i]×inv[k]=k×inv[i]×inv[k]
∴ t × i n v [ k ] = − i n v [ i ] ⇒ t × i n v [ k ] ≡ − i n v [ i ] ( m o d   p ) \therefore t × inv[k] = -inv[i] \Rightarrow t × inv[k] \equiv -inv[i](mod \ p) t×inv[k]=inv[i]t×inv[k]inv[i](mod p)
k k k t t t带入得:
∴ ⌊ \therefore \lfloor p i p \over i ip ⌋ × i n v [ p % i ] ≡ − i n v [ i ] ( m o d   p ) \rfloor × inv[p \% i] \equiv -inv[i](mod \ p) ×inv[p%i]inv[i](mod p)
i n v [ i ] = − ⌊ inv[i] = -\lfloor inv[i]= p i p \over i ip ⌋ × i n v [ p % i ] % p \rfloor × inv[p \% i] \% p ×inv[p%i]%p
− ⌊ -\lfloor p i p \over i ip ⌋ \rfloor 化负为正得:
i n v [ i ] = ( p − ⌊ inv[i] = (p-\lfloor inv[i]=(p p i p \over i ip ⌋ ) % p × i n v [ p % i ] % p \rfloor) \% p × inv[p \% i] \% p ⌋)%p×inv[p%i]%p

4):求阶乘逆元的递推式:

代码:

inv[i] = inv[i + 1] × (i + 1) % p

因证明太过于复杂且用处不大,故省去。

到这里,数论的所有基础知识就结束了,以后应该还会继续更新的~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值