BotByte

Extended Euclid.cpp

Jun 13th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.62 KB | None | 0 0
  1. /*
  2.     Extended Euclid
  3.     UVa - 10104
  4. */
  5.  
  6. #include <bits/stdc++.h>
  7.  
  8. using namespace std;
  9.  
  10. #define ll long long
  11.  
  12. ll gcd(ll p,ll q, ll *x, ll *y)
  13. {
  14.      ll x1,y1;
  15.      ll g;
  16.  
  17.      if (q>p) return (gcd(q,p,y,x));
  18.  
  19.      if (q==0) {
  20.         *x=1;
  21.         *y=0;
  22.         return p;
  23.      }
  24.  
  25.      g=gcd(q, p%q, &x1,&y1);
  26.  
  27.      *x = y1;
  28.      *y = (x1 - (ll)floor(p/q)*y1);
  29.  
  30.      return g;
  31. }
  32.  
  33. int main()
  34. {
  35.     ll a, b;
  36.     while(scanf("%lld %lld", &a, &b) == 2){
  37.         if(a == 0) swap(a, b);
  38.         ll x, y;
  39.         ll g = gcd(a, b, &x, &y);
  40.         printf("%lld %lld %lld\n", x, y, g);
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment