← 返回题目页

A2769 能量充能

标程

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--) {
        long long a, b, c, d;
        cin >> a >> b >> c >> d;

        if (c < a || d < b) {
            cout << -1 << "\n";
            continue;
        }

        long long x = c, y = d, cnt = 0;
        bool ok = false;
        while (true) {
            if (x == a && y == b) { ok = true; break; }
            if (x < a || y < b) break;
            if (x == y) break;
            if (x > y) {
                long long k = (x - a) / y;
                if (k == 0) break;
                x -= k * y;
                cnt += k;
            } else {
                long long k = (y - b) / x;
                if (k == 0) break;
                y -= k * x;
                cnt += k;
            }
        }

        cout << (ok ? cnt : -1LL) << "\n";
    }
    return 0;
}

动画演示