Advertisement
Emiliatan

exgcd

Nov 24th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.32 KB | None | 0 0
  1. /* exgcd  __X * a + __Y * b = r = gcd(a, b)*/
  2. int64 __X, __Y;
  3. tuple<int64, int64, int64> exgcd(int64 a, int64 b) noexcept
  4. {
  5.     if (b == 0)
  6.     {
  7.         __X = 1;
  8.         __Y = 0;
  9.         return { __X, __Y, a };
  10.     }
  11.     int64 r = get<2>(exgcd(b, a % b));
  12.     int64 tmp = __X;
  13.     __X = __Y;
  14.     __Y = tmp - a / b * __Y;
  15.     return { __X, __Y, r };
  16. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement