逆元是什么
- 设S为一有二元运算 * 的集合。若e为(S,*)的单位元且a*b=e,则a称为b的左逆元素且b称为a的右逆元素。若一元素x同时是y的左逆元素和右逆元素时,x称为y的两面逆元素或简称为逆元素。S内的一有两面逆元素的元素被称为在S内为可逆的。
- 直观地说,它是一个可以取消另一给定元素运算的元素。
乘法逆元
- 也就是说,对于一个乘法运算∗b,它的乘法逆元就是它的倒数 b−1 。
分数取模
- 然而在很多题目中,数据都是十分大的,所以题目经常会出现”答案模Ha”,就是对Ha取模,这里Ha一般是个质数,比如说最常见的 109+7 ( 1000000007 ),此时,要是答案是个分数,那该怎么办呢?答案就是要用到分数取模的方法。
- 先把内容写出来,下面再证明:
当gcd(b,Ha)==1时(其实就是 b 和 Ha 互质)
a∗b−1 ≡ a∗bHa−2 (mod Ha)
这里的”≡”是同余符号,意思是左边那个和右边那个除以最后括号里的Ha的余数相同。
这样我们要求a/b模Ha的值时,就不会不知所措,只需求出 a∗bHa−2 模Ha的值就行了。
证明
这个的证明需要用到
费马小定理,费马小定理就先不证了,可以百度或看其它的博文。
费马小定理:
- 假如p是质数,且gcd(a,p)=1,那么 ap−1 ≡ 1 (mod p)。
- 即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。
若
gcd(b,Ha)==1那么我们就可以做一下推导(此处模数都为Ha,就不打上去了):
bHa−1 ≡ 1
bHa−2 ≡ b−1
a∗bHa−2 ≡ a∗b−1
第二行是第一行两边同乘 b−1 得到的
这样,分数取模我们就学会了。
注意
要注意几点:
*
Ha必须是质数
*
b与Ha要互质