相关内容
整除
b可以被a整除,b是a的倍数,a是b的约数,就称为a整除b,记做a|b
a|b=b%a==0
整除的性质
1.符号不影响
-a|b=a|b
2.传递性
a|b,b|c,a|c
3.a|b,b|c,等价于任意的整数x,y,有a|(bx+cy)
4.m!=0,am|bm
5. 若(m,a)=1 , m|ab,则 m|b
6. 所有的 a_i | c (1≤i≤n) 成 立 的 充 分 必 要 条 件 是[a_1,a_2,…,a_n]|c 。也就是说一组数的公倍数必然是这组数最小公倍数的倍数。
同余
设 m≠0 ,若 m|a-b ,即 a-b=km ,k 为任意整数,则称 :a 同余于 b 模 m ,记作:
a≡b(mod m)
这个式子还称为 b 是 a 对模 m 的剩余。若 1≤b<m,则称 b 是 a 对模 m 的最小正剩余。
性质 1
若 a≡b(mod m),满足:
a≡a(mod m) 自反
b≡a(mod m) 对称
a≡b(mod m), b≡c(mod m)⇒ a≡c(mod m) 传递
a+c≡b+c(mod m) 同加
a×c≡b×c(mod m), a×c≡b×d(mod m)(c≡d(mod m)) 同乘
a的n次方≡b的n次方(modm) 同幂
逆元
取模的四则运算
a+b 取模 p:(a+b)%p
a-b 取模 p:(a-b+p)%p
a×b 取模 p:a*b%p
但除法就不能像上面一样了,可能会出现小数的情况,那怎么办呢?很简单,一个数除一个数,就相当于乘它的倒数,这就是逆元,在模运算系统中,inv(a)代表 a 分之一。
代码:
int niyuan(int a,int b,int mod){
int res=1;
while(b){
if(b&1)res=res*a%mod;
b>>=1;
a=a*a%mod;
}
return res;
}