51nod 1256 乘法逆元 拓展欧几里得求逆元

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1256 乘法逆元 拓展欧几里得求逆元相关的知识,希望对你有一定的参考价值。

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
思路:套模板。。。该模板来自《挑战编程》,里面有详细的解释。 真的很快啊0ms
a, m 互质。
#include <iostream>
#include <cstdio>

using namespace std;
int extgcd(int a, int b, int &x, int &y){
    int d = a;
    if(b != 0){
        d = extgcd(b, a%b, y, x);
        y -= (a/b)*x;
    }else {
        x = 1, y = 0;
    }return d;
}
int mod_inv(int a, int m){
    int x, y;
    extgcd(a, m, x, y);
    return (m+x%m)%m;
}
int main() {
    int n, m;
    scanf("%d%d", &m, &n);
    printf("%d\n", mod_inv(m, n));
    return 0;
}

 

 

以上是关于51nod 1256 乘法逆元 拓展欧几里得求逆元的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1256 乘法逆元 扩展欧几里得

51Nod 1256 乘法逆元

51Nod 1256 乘法逆元 Label:exgcd

51nod 1256 乘法逆元

扩展欧几里得算法求逆元算法结果是负数

利用扩展的欧几里得算法求逆元