给定 𝑛 组数据 𝑎𝑖,𝑏𝑖,𝑚𝑖,对于每组数求出一个 𝑥𝑖,使其满足 𝑎𝑖×𝑥𝑖 ≡ 𝑏𝑖(mod𝑚𝑖),如果无解则输出 impossible
。
输入格式
第一行包含整数 𝑛。
接下来 𝑛 行,每行包含一组数据 𝑎𝑖,𝑏𝑖,𝑚𝑖。
输出格式
输出共 𝑛 行,每组数据输出一个整数表示一个满足条件的 𝑥𝑖,如果无解则输出 impossible
。
每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。
输出答案必须在 𝑖𝑛𝑡 范围之内。
数据范围
1≤n≤,
1≤𝑎𝑖,𝑏𝑖,𝑚𝑖≤2×
输入样例:
2
2 3 6
4 3 5
输出样例:
impossible
-3
代码:
#include<iostream>
using namespace std;int n;int EXT_gcd(int a,int b,int &x,int &y){if(b == 0){x = 1;y = 0;return a;}else{int d = EXT_gcd(b,a % b,x,y);int temp = y;y = x - (a/b) * y;x = temp;return d;}
}int main(){cin>>n;while(n--){int a,b,m,x,y;cin>>a>>b>>m;int res = EXT_gcd(a,m,x,y);if(b % res != 0){cout<<"impossible"<<endl;}else{cout<<(long long)x * (b / res) % m<<endl;}}return 0;
}