题目
给定 𝑛 对正整数 𝑎𝑖, 𝑏𝑖,对于每对数,求出一组 𝑥𝑖, 𝑦𝑖,使其满足 𝑎𝑖 × 𝑥𝑖 + 𝑏𝑖 × 𝑦𝑖 = 𝑔𝑐𝑑(𝑎𝑖, 𝑏𝑖)。
思路
1.暴力枚举
枚举每一种情况,符合就输出。
结果:TLE
2.数论
用gcd与exgcd组合进行输出
代码:
#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
return b ? gcd(b, a % b) : a;
}
long long exgcd(long long a, long long &x, long long b, long long &y){
if(!b){
x = 1, y = 0;
return a;
}
long long d = exgcd(b, x, a % b, y);
x = x - a / b * y;
std::swap(x, y);
return d;
}
long long n, a, b;
int main(){
cin >> n;
while(n -- ){
cin >> a >> b;
long long x = gcd(a, b), y = 0, t = exgcd(a, x, b, y);
cout << x << " " << y << "\n";
}
}