#include #include // DIV(a,b) gives q where a == b * q + r and 0 <= r < b (NOTE: b > 0). #define DIV(a,b) ((a) < 0 ? -((-(a))/(b)+1) : ((a)/(b))) using namespace std; int exgcd(int a, int b, int &x, int &y) { if(b == 0) { x = 1, y = 0; return a; } else { int g = exgcd(b, a % b, y, x); y -= (a / b) * x; return g; } } bool compute(int &x, int &y, int dx, int dy) { int q; q = DIV(y, dy); x += q * dx; y -= q * dy; if(x < 0) { if(dx > 0) return false; q = DIV(x, -dx); x += q * dx; y -= q * dy; } return true; } void update(int a, int b, int x, int y, int dx, int dy, int &xm, int &ym) { if(dx < dy) { if(!compute(x, y, dx, dy)) return; } else { if(!compute(y, x, dy, dx)) return; } if(x + y != xm + ym) { if(x + y < xm + ym) xm = x, ym = y; } else { if(a * x + b * y < a * xm + b * ym) xm = x, ym = y; } } int main(void) { ifstream cin("A.txt"); int a, b, d; while(cin >> a >> b >> d) { if(a == 0 && b == 0 && d == 0) break; int x, y, g; g = exgcd(a, b, x, y); x *= d / g; y *= d / g; int xm = INT_MAX, ym = 0; update(a, b, +x, +y, +(b/g), +(a/g), xm, ym); update(a, b, +x, -y, +(b/g), -(a/g), xm, ym); update(a, b, -x, +y, -(b/g), +(a/g), xm, ym); cout << xm << " " << ym << endl; } return 0; }