进行模运算时的一些注意事项
三则运算
\((a+b)\%p=(a\%p+b\%p)\%p\)
\((a-b)\%p=(a\%p-b\%p)\%p\)
\((a\times b)\%p=(a\%p \times b\%p)\%p\)
除法的模运算和其它三则的不一样。
\((a^b)\%p=((a\%p)^b)\%p\)
\(\\\)
结合律
\((a+b)\%p+c\%p=(a+(b+c))\%p\)
\((a\times b)\%p\times c\%p=(a\times (b\times c))\%p\)
\(\\\)
交换律
\((a+b)\% p = (b+a)\% p\)
\((a \times b)\% p = (b\times a) \% p\)
\(\\\)
分配律
\((a+b) \% p = ( a \% p + b \% p ) \%p\)
\(((a +b)\% p * c) \% p = ((a * c) \% p + (b * c) \% p) \% 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)。\)
\(\\\)
\(\\\)
????写程序时加减乘类
对于\(a+b,a\times b,a-b\)这类的算式:
在计算前先把\(a,b\)对\(p\)取模。
\(\\\)
乘方类
对于\({a}^{b}\)这样的算式:
\(gcd(a,p)=1\)
对于\(a^b\)这类的算式,可以在计算前先把\(a\)对\(p\)取模,再把\(b\)对\(\varphi(p)\)取模(欧拉定理),在进行乘方运算。
\(gcd(a,p)\ne 1\)
也可以运用扩展欧拉定理进行运算。
\(\\\)
除类
前提:\(b\)与\(p\)互质
对于\(\frac{a}{b}\)这样的算式:
先把\(a,b\)各自对\(p\)取模,求\(b\)在模\(p\)意义下的逆元,再计算\(a*b^{-1}\% p\)。