ACWING878. 线性同余方程
ACWING878. 线性同余方程
描述
\(n\) 组数据,求解 \(a_i*x\equiv b_i\pmod{m_i}\)。
思路
拓展欧几里得算法。。。
代码
#include<bits/stdc++.h>
using namespace std;
int n;
int extgcd(int a,int b,int &x,int &y){
if(b==0){
x=1; y=0;
return a;
}
int d=extgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
int main(){
cin>>n;
while(n--){
int a,b,m,x,y;
scanf("%d%d%d",&a,&b,&m);
int d=extgcd(a,m,x,y);
int t=m/d;
if(b%d) {puts("impossible"); continue;}
long long xx=x;
xx*=b/d;
x=(xx%t+t)%t;
printf("%d\n",x);
}
return 0;
}