欧几里得算法和扩展欧几里得算法
扩展欧几里得算法
给定 n对正整数 ai,bi,对于每对数,求出一组 xi,yi,使其满足 ai×xi+bi×yi=gcd(ai,bi)。
输入格式
第一行包含整数 n。
接下来 n行,每行包含两个整数 ai,bi。
输出格式
输出共 n 行,对于每组 ai,bi,求出一组满足条件的 xi,yi,每组结果占一行。
本题答案不唯一,输出任意满足条件的 xi,y 均可。
数据范围
1≤n≤10^5 1≤ai,bi≤2×10^9
输入样例:
2
4 6
8 18
输出样例:
-1 1
-2 1
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
ll d=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return d;
}
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll a,b,x,y;
scanf("%lld %lld",&a,&b);
exgcd(a,b,x,y);
printf("%lld %lld\n",x,y);
}
return 0;
}