當(dāng)前位置:
首頁 >
51nod 1256 乘法逆元(扩展欧几里得)
發(fā)布時(shí)間:2025/3/20
44
豆豆
生活随笔
收集整理的這篇文章主要介紹了
51nod 1256 乘法逆元(扩展欧几里得)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題:
給出2個(gè)數(shù)M和N(M < N),且M與N互質(zhì),找出一個(gè)數(shù)K滿足0 < K < N且K * M % N = 1,如果有多個(gè)滿足條件的,輸出最小的。
Input
輸入2個(gè)數(shù)M, N中間用空格分隔(1 <= M < N <= 10^9)
Output
輸出一個(gè)數(shù)K,滿足0 < K < N且K * M % N = 1,如果有多個(gè)滿足條件的,輸出最小的。
Sample Input
2 3
Sample Output
2
思路:由于M和N不一定是質(zhì)數(shù),故不能用費(fèi)馬小定理,應(yīng)用擴(kuò)展歐幾里得算法。K*M%N=1,求K即求出M對于N的乘法逆元。
代碼:
#include <iostream> using namespace std; typedef long long ll; int exgcd(int a,int b,int &x,int &y) {if(b==0){x=1;y=0;return a;}else{int r=exgcd(b,a%b,x,y);int t=x;x=y;y=t-(a/b)*x;return r;//r為ab最大公約數(shù) } } int main() {int m,n,x,y;cin>>m>>n;exgcd(m,n,x,y);while(x<0){x+=n;//若得到的x小于0,則應(yīng)使其加n,直到x>0. }cout<<x<<endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的51nod 1256 乘法逆元(扩展欧几里得)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU1576 A/B 费马小定理
- 下一篇: 51nod 1513-3的幂的和(费马小