扩展欧几里得模板

 
  #include<iostream>
  #include<cstdio>
  #include<cstring>
  #include<cmath>
  #include<algorithm>
  #include<queue>
  #include<cstdlib>
  #include<iomanip>
  #include<cassert> 
using namespace std;

long long x,y;
long long exgcd(long  long a,long long b,long long  &x,long long &y){
	if(!b){
		x=1;y=0;return a;
	}
	 long long GCD=exgcd(b,a%b,y,x);
	y-=(a/b)*x;
	return GCD;
	
} 
int main()
{
     long long a,b;
	scanf("%lld%lld",&a,&b);
	
	 long long ans=exgcd(a,b,x,y);
		printf("%lld\n",ans);
	return 0;	
} 


 

 

当输入a,b; 可以输出x,y 和gcd(a,b)

如果输入的想要看是否符合条件可 将输入的 t 对 gcd(a,b)取余,如果余数为0 则可以符合该题目,继续进行下一步

然后如果想要  取到最小正整数的话还需要加上a和b的最小公倍数

 

1ax≡b(MODn),等价ax+yn=b,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值