欧几里得算法和扩展欧几里得算法

扩展欧几里得算法

给定 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;
}

https://ksmeow.moe/euclid/

全部评论

相关推荐

ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务