Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.50 KB | None | 0 0
  1. int crt(int a1, int m1, int a2, int m2){
  2.     // x = a1 (mod m1)
  3.     // x = a2 (mod m2)
  4.     a1 *= m2;
  5.     a2 *= m1;
  6.     // m2 x = a1 m2 (mod m1 m2)
  7.     // m1 x = a2 m1 (mod m2 m1)
  8.     int m = m1 * m2;
  9.     int b1 = m2, b2 = m1;
  10.     // b1 x = a1 (mod m)
  11.     // b2 x = a2 (mod m)
  12.     while (b2){
  13.           int t = b1 / b2;
  14.           b1 -= t * b2;
  15.           a1 -= t * a2;
  16.           a1 %= m;
  17.           if (a1 < 0) a1 += m;
  18.           swap(b1, b2);
  19.           swap(a1, a2);
  20.     }
  21.     return a1;
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement