sjp大佬让我写同余那就只能硬着头皮按学长的ppt来写了,咕咕咕
数学符号
不想一个一个打了,凑合着看吧
快速幂
输入b,p,k的值,求b^p mod k的值。
方法一
直接反复平方,复杂度是$O(n)$基本没戏会TLE的,不用看了
方法二
如果$a$自己乘一次就变成了$a^2$,$a^2$再自乘一次就变成了$a^4$.....乘$n$次就变成了$2^n$
我们将b分解成二进制看一下下
假设b=$11$,分解成二进制就是$(1011)$,从左到右这些 $1$分别代表十进制的 $8$,$2$,$1$,也就是$a^b=a^8 \times a^2 \times a^1$这就是快速幂的原理
int quick_pow(int a, int b)
{
int ans = 1, base = a;
while(b > 0)
{
if(b & 1)//和b%2!=0一样的效果
ans *= base;//把ans乘上对应的a^(2^n)
base *= base;//base自乘
b >>= 1;//位运算,b右移一位,如101变成10(把最右边的1移掉了),10010变成1001。现在b在二进制下最后一位是刚刚的倒数第二位。
}
return ans;
}
同余
概念
若 $m | (a − b)$,则称$ a $与$ b $对模$ m$ 同 余,记作$ a ≡ b (mod m)$
同余的性质
1.自反性:$a ≡ a$
2.对称性:若 $a ≡ b$,则$ b ≡ a$
3.传递性:若$ a ≡ b$,$b ≡ c$,则$ a ≡ c$
4.同余式相加:若 $a ≡ b$,$c ≡ d$,则 $a ± c ≡ b ± d$
5.同余式相乘:若 $a ≡ b$,$c ≡ d$,则 $ac ≡ bd$
扫描二维码关注公众号,回复:
6253640 查看本文章
乘法逆元
概念:
若 $ap ≡ 1 (mod m)$,则称 $a$ 和 $p$在模 $m $意义下互为乘法逆
元。简称$ a $是 $p$ 的逆元或$ p$ 是$$ 的逆元。为了方便我们常把 $a$
的乘法逆元记做$ a^{-1}$ 。
}
因为 $a \times a^{-1} ≡ 1$,所以我们可以把$ a^{−1} $看作$\frac{1}{a} $。但请注意在模意义下不存在除法操作。乘法逆元可能不存在。
求逆元的方法
扩展欧几里得
没更新完