其他分享
首页 > 其他分享> > 洛谷 P1082 [NOIP2012 提高组] 同余方程

洛谷 P1082 [NOIP2012 提高组] 同余方程

作者:互联网

题意
求解\(ax \equiv 1 \mod b\)

套路变形为\(ax-by=1\)

题目保证有解(即为a、b互质),使用exgcd求解

#include<bits/stdc++.h>
#define int long long
using namespace std;

int a,b;

int exgcd(int A,int B,int &x,int &y){
	if(B==0) return x=1,y=0,A;
	int g=exgcd(B,A%B,x,y);
	int t=x;
	x=y;y=t-A/B*y;
	return g;	
}

signed main(){
	cin>>a>>b;
	int x,y;
	int g=exgcd(a,b,x,y);
	int stp=b/g;
	if(stp<0) stp=-stp;
	x%=stp;
	if(x<=0) x+=stp;
	cout<<x<<endl;
	return 0;
}

标签:洛谷,NOIP2012,int,stp,exgcd,return,P1082,long,ax
来源: https://www.cnblogs.com/ghostcai/p/15092789.html