首页 > 代码库 > 51nod 1256 乘法逆元 拓展欧几里得求逆元
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 乘法逆元 拓展欧几里得求逆元
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。