找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的
输出
输出一个数K,满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
示例输入
2 3
示例输出
2
思路:求解K*M%N=1,就等价于K*M=1%N;求K
#include<map> #include<queue> #include<cmath> #include<iostream> #include<cstdio> #include<stack> #include<cstring> #include<algorithm> #define LL __int64 #define inf 0x3f3f3f3f const double PI=acos(-1.0); using namespace std; int ex(int a,int b,int &d,int &x,int &y){ if(!b){ d=a;x=1;y=0; } else{ ex(b,a%b,d,y,x);y-=x*(a/b); } } int main(){ int n,m,i,j,k,x,y,d; while(~scanf("%d%d",&m,&n)){ ex(m,n,d,x,y); x/=d; x=( (x%(n/d) )+n/d )%(n/d); printf("%d\n",x); } return 0; }