luogu1082 [NOIp2012]同余方程 (扩展欧几里得)

由于保证有解,所以1%gcd(x,y)=0,所以gcd(x,y)=1,直接做就行了

 #include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=; inline ll rd(){
ll x=;char c=getchar();ll neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} void exgcd(ll a,ll b,ll &x,ll &y){
if(b==){x=,y=;return;}
ll x1,y1;
exgcd(b,a%b,x1,y1);
x=y1;y=x1-a/b*y1;
} int main(){
ll a=rd(),b=rd();ll x,y;
exgcd(a,b,x,y);
printf("%lld\n",(x%b+b)%b);
return ;
}
上一篇:SpringBoot配置activemq消息队列


下一篇:扩展欧几里得模板&逆元求法