除法的取模运算

Posted sysu_zjl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了除法的取模运算相关的知识,希望对你有一定的参考价值。

逆元: 若,b*b1 % c == 1 则,b1称为b模c的乘法逆元。
在ACM中,许多除法取模都要用到求逆元。 但是,逆元,为什么能给我们带来 ( a/b ) % c == ( a*b1 ) % c ???

(当然a/b要整除)

要知道,取模等式等价变形中,是没有除法的!!!

而推导式,还是没有用除法的地方!!!

我们用反证法证明:
若b*b1 % c == 1,则( a/b ) % c != ( a*b1 ) % c 若我们证明这一命题是错误的,我们目的就达到了。
令,a/b == k1*c+y1 a*b1 == k2*c+y2

原来的证明则变成了:若b*b1 % c == 1,则 y1!=y2
两式相减,有 a/b-a*b1 == (k1-k2)*c + (y1-y2)

设 k == k1-k2 y == y1-y2 有,a/b-a*b1 == k*c + y

左右乘以b,

有 a*(1-b*b1) == k*b*c + b*y

左右模上c,

左边 == a*(1-b*b1)%c

  == ( a*( 1%c - b*b1%c ) )%c

   == 0

右边 == (k*b*c + b*y)%c

  == b*y%c

因为a/b为整除,b显然不会是0,那么y必须是0,这与命题矛盾,证毕

以上是关于除法的取模运算的主要内容,如果未能解决你的问题,请参考以下文章

通过逆元实现大数据除法的取模

除法求模中求逆元的两种方法

Java 中的取模和取余

三则混合运算下的取模

C/C++除法实现方式及负数取模详解

分数的乘法逆元和负数的取模运算