1256 乘法逆元

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
 
Input
输入2个数M, N中间用空格分隔(1 <= M < N <= 10^9)
Output
输出一个数K,满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
Input示例
2 3
Output示例
2


纯粹的求逆元

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int exgcd(int a,int b,int &x,int &y){
 6     if(b==0){
 7         x=1,y=0;
 8         return a;
 9     }
10     int r = exgcd(b,a%b,x,y);
11     int t = x;
12     x = y;
13     y = t-(a/b)*y;
14     return r;
15 }
16 int main(){
17     int n,m;
18     cin>>n>>m;
19     int x,y;
20     int p = exgcd(n,m,x,y);
21     cout<<(x+m)%m<<endl;
22     return 0;
23 }

 

posted @ 2018-04-23 21:53  #忘乎所以#  阅读(227)  评论(0编辑  收藏  举报