切換
舊版
前往
大廳
主題

ZeroJudge - a289: Modular Multiplicative Inverse 解題心得

Not In My Back Yard | 2018-10-24 23:43:39 | 巴幣 0 | 人氣 597

題目連結:


題目大意:
給定兩正整數a、n(1 ≦ a、n ≦ 100, 000, 000),找到一個b滿足:
ab ≡ 1 (mod n)
若找不到b滿足上式,則輸出「No Inverse」。



範例輸入:
79 62
96 47
49 28



範例輸出:
11
24
No Inverse



解題思維:
可以參考WIKI頁面下的模反元素,以便查看更詳盡的相關證明。


簡單來講,a % n(取n的餘數,等同 mod n)有模反元素的充分條件為:a、n的最大公因數為1,即GCD(a, n)=1。


因為根據「擴展歐幾里得算法」,我們可以找到x、y滿足:
ax + by = GCD(a, b)
將上式寫成我們在這題所需的形式即為:
ax + ny = GCD(a, n)
而把等式左右兩邊同取n的餘數:
ax ≡ GCD(a, n)(mod n)

以上我們可以看到,當a跟n互質時,上式的x就是我們要找的模反元素(因為GCD(a, n)=1)。

因此使用上述提到的擴展歐幾里得算法,在算GCD的時候,順便把輾轉相除法的關係式存起來。然後判斷GCD的值。如果是1,剛剛存下來的關係式便是所求;反之,不是1就不存在模反元素。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作