同余运算及其基本性质

取模:

a%b b定是正整数,尽管语言上b<0合法。/b=0出现除0错 

(a+b)mod n=((a mod n)+(b mod n)) mod n

(a-b)mod n=((a mod n)-(b mod n)+n)mod n     //注意减法, a mod n 可能小于 b mod n 结果需加上n

ab mod n=(a mod n)(b mod n)mod n

注意乘法,注意(a mod n)(b mod n)是否会溢出,用long long 保存中间结果

 

1 int mul_mod(int a,,int b,int n)
2 {
3     a%=n;b%=n;
4     return (int)((long long)a*b%n);
5 }

 

除法不可直接取模,用到乘法逆元

 

同余运算:

(a-b)%m==0,就称a,b关于m同余/a,b对模数m同余

e.g. (100-60)%8==0,我们就说100和60对于模数8同余

它的另一层含义就是说,100和60除以8的余数相同

a和b对m同余,我们记作a≡b(mod m)

你会发现这种记号到处都在用,比如和数论相关的书中就经常把a mod 3 = 1写作a≡1(mod 3)

 

性质:

如果a≡b(mod m),x≡y(mod m),则a+x≡b+y(mod m)//两边分别相加也是
如果a≡b(mod m),x≡y(mod m),则ax≡by(mod m)//两边分别相乘也是
如果ac≡bc(mod m),且c和m互质,则a≡b(mod m)//c,m互质时,去掉c也是

 

模线性方程组:

输入正整数a,b,n 解方程ax≡b(mod n).a,b,n<=10^9

方程可理解为ax-b是n的正整数倍,设倍数为y,则ax-b=ny;即ax-ny=b  解此不定方程----扩展欧几里得算法

同余方程的解是一个同余等价类

b=1时,ax≡1(mod n)的解称a关于模n的逆invers----乘法逆元

有解条件,a,n互质gcd(a,n)=1,此时,方程只有唯一解

posted @ 2017-02-13 22:32  kimsimple  阅读(1391)  评论(0编辑  收藏  举报