1. 程式人生 > >51Nod 1256 乘法逆元模板題

51Nod 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 n,m;
int exgcd(int a,int b,int &x,int &y)
{
	if(b==0)
	{
		x=1;
		y=0;
		return a;
	}
	int r=exgcd(b,a%b,x,y);
	int temp=x;
	x=y;
	y=temp-a/b*y;
	return r; 
}
int main()
{
	int x,y;
	scanf("%d%d",&n,&m);
	exgcd(n,m,x,y);
	x=(x+m)%m; 
	printf("%d\n",x);
	return 0;
}