Solve problem 381
This commit is contained in:
@@ -230,3 +230,18 @@ def cache(f):
|
||||
return r
|
||||
return func_cached
|
||||
|
||||
|
||||
def ext_gcd(a: int, b: int) -> tuple[int, int, int]:
|
||||
if a == 0:
|
||||
return (b, 0, 1)
|
||||
else:
|
||||
gcd, x, y = ext_gcd(b % a, a)
|
||||
return (gcd, y - (b // a) * x, x)
|
||||
|
||||
|
||||
def modinv(a: int, b: int) -> int:
|
||||
gcd, x, _ = ext_gcd(a, b)
|
||||
if gcd != 1:
|
||||
raise Exception('Modular inverse does not exist')
|
||||
else:
|
||||
return x % b
|
||||
|
||||
Reference in New Issue
Block a user