Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int gcd(int a, int b, int &ca, int& cb)
- {
- if(a == 0)
- {
- ca = 0;
- cb = 1;
- return b;
- }
- int ta, tb;
- int g = gcd(b%a, a, ta, tb);
- ca = tb - (b / a) * ta;
- cb = ta;
- return g;
- }
- bool diof_solve(int a, int b, int c, int& x, int& y, int &d)
- {
- int xg, yg;
- d = gcd(a, b, xg, yg);
- if(c % d != 0)return false;
- x = xg * c / d;
- y = yg * c / d;
- return true;
- }
- int main()
- {
- int rx, ry, a, b;
- cin >> rx >> ry >> a >> b;
- int x0, y0, g;
- if(!diof_solve(a, b, ry - rx, x0, y0, g))
- {
- cout << "-1\n";
- return 0;
- }
- int kl, kh;
- kl = x0*g/(-b);
- kh = y0*g/a;
- if(x0*g % b != 0)kl++;
- if(y0*g % a != 0)kh++;
- int k = max (kl, kh);
- cout << max(x0 + k * b / g - y0 + k * a / g, -1) << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement