给出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<iostream> #include<algorithm> #include<cstdio> using namespace std; int exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return a; } int gcd = exgcd(b, a%b, x, y); int t=x; x=y; y = t- a/b*y; return gcd; } int main() { int n, m, x, y; while (scanf("%d%d", &n, &m) != EOF) { int gcd = exgcd(n, m, x, y); x = ((x % m) + m)%m; printf("%d\n", x); } return 0; }