模运算
模运算即 mod,% 就是求余运算
1.a除以m的余数r,r= a mod m=a % m
即0 ≤ r ≤ m-1,a = k*m+r,其中 k=a/m取整,记作【a/m】
2.a%m 的正负由被除数的符号决定,c里面是和被除数的符号相同
同余
如果对于整数 m 和两个整数 a和 b,如果存在((a-b)mod)=0,就称a 和 b是同余的,记为a≡b(mod m)。
1.如果存在((a-b)mod)=0,当且仅当存在整数k,a=b+km
例如:
-7≡-3≡1≡5≡9(mod 4)
-5≡-1≡3≡7≡11(mod 4)
同余类(剩余类)
一个整数被 m整除之后的余数,有 0~ m-1 这m种情况,如果把所有整数按照余数的不同进行分类,可以的分成不相交的m个子集,把对m同余的所有数构成一个集合,叫做m的一个同余类(剩余类)。
1.整数根据对m的同余关系,可以构成一个划分
2.对给定的模m的运算,整数的同余关系是一个等价关系
集合A中元素的等价关系的一些性质,用 ~ 来表示
(1)自反性:对A中任意元素:a~a
(2)对称性:对于任意的a,b属于A,若a ~ b,则有b~a
(3)传递性:对于a,b,c,属于A,若a ~ b,b~c,则a ~c
完全剩余系
对于整数m, 有 r0, r1, r2, …, rm−2, rm−1 个同余类,且两两模m不同余,这些类的同余类组成的集合叫做完全剩余系
简化剩余系
1.m的完全剩余系中,与m互素的同余类元素,且他们两两不同余,称为模m的简化剩余系
2.简化剩余系中的同余类个数称为欧拉函数
简化剩余系关于模m乘法封闭(所乘的东西都还是在一个体系中未与外界有联系)
证明:若有 a,b(0≤a,b<m),且 GCD(a,m)=GCD(b,m)=1,因为 a,b
与m都无相同因子,故 a*b 与m 也没有相同因子,即他们也互质,所以
a∗b mod m 也属于m的简化剩余系。
带模运算的性质
(a + b) % p = (a % p + b % p) % p
(a – b) % p = (a % p – b % p) % p
(a * b) % p = (a % p * b % p) % p
(a/b) % p = ((a % p)b) % p
(a / b) % p ≠ (a % p / b % p) % p
交换律:
(a + b) % m = (b + a) % m
( a * b) % m = (b * a) % m
结合律:
((a+b) % p + c) % p = (a + (b+c) % p) % p
((ab) % p * c)% p = (a * (bc) % p) % p
分配律:
((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p
同余式的性质
自反性:a≡a(% p)
对称性:a≡b(% p) → b≡a(% p)
传递性:(a≡b(% p), b≡c(% p)) → a≡c(% p)
消去律:ac≡bc(% p) → a≡b(% p/GCD(c,p) )
(理解一下:相当于排掉了 两个数共同因数的对p的质数)
a≡b(% cd) → a≡b(% d)
(理解:a,b对一个数同余,那么他们对那个数的因数也同余)
(a≡b(% d),a≡b(% c)) → a≡b(% LCM(c,d))
若a≡b (% p),则对于任意的c,都有 (a + c) ≡ (b + c) (%p)
若a≡b (% p),则对于任意的c,都有 (a * c) ≡ (b * c) (%p)
若a≡b (% p),则对于任意的c,都有 (a的c次方) ≡ (b的c次方) (%p)
(觉得与上面那个模运算类似)
若a≡b (% p),c≡d (% p),则 (a +c) ≡ (b +d) (%p),(a - c) ≡ (b - d) (%p),(a * c) ≡ (b * d) (%p)
算术运算与同余可以交换次序
例题:余数之和 (BZOJ1257) https://www.acwing.com/problem/content/description/201/