1. 程式人生 > >除法的取模運算

除法的取模運算

逆元: 若,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,這與命題矛盾,證畢