def exgcd(a,b):
if b == 0:
#当b是0的时候,gcd(a,b)是0
#所以返回1,0
return 1,0
else:
#如果b!=0,假设ecgcd(a,b)该返回x,y;ecgcd(b,a%b)该返回x`,y`,
#那么其实对于ecgcd(b,a%b)而言,
x , y = exgcd(b,a%b) #假设已经知道了x`,y`
return y,x - a//b * y #ecgcd(a,b) 答案为 x,y = y` , x` - (a//b) y`
n = int(input())
for i in range(n):
a , b = map(int,input().split())
a , b = exgcd(a,b)
print(a , b , sep = ' ')
#ax + by = gcd(a,b)
#bx` + a%by` = gcd(b,a%b)
#gcd(a,b) = gcd(b,a%b)
#ax + by = bx` + a%by`
#ax + by = bx` + (a - (a//b)*b)y`
#b(y - x` + (a//b)y`) = a(y` - x)
#所以 : y = x` - (a//b) y`
######: x = y`
第十五届蓝桥杯国赛prepare --exgcd(a,b)
最新推荐文章于 2024-06-10 23:55:29 发布