51Nod 1256 乘法逆元

xiaoxiao2021-02-28  127

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

题意:》》》》》

思路:扩展欧几里得算法代入即可,有一篇讲的不错的博客:乘法逆元;

下面附上代码:

#include<bits/stdc++.h> using namespace std; int exgcd(int a,int b,int &x,int &y) { int d=a; if(b) { d=exgcd(b,a%b,y,x); y-=(a/b)*x; } else { x=1; b=0; } return d; } int mod_inverse(int a,int m) { int x,y; exgcd(a,m,x,y); return (m+x%m)%m; } int main() { int a,m; cin>>a>>m; printf("%d\n",mod_inverse(a,m)); return 0; }

转载请注明原文地址: https://www.6miu.com/read-35048.html

最新回复(0)