Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

A. Two Rabbits (Codeforces Round #620 Div. 2)

問題

https://codeforces.com/contest/1304/problem/A

問題概要

数直線上で、座標xから一跳びごとに正方向にa進むうさぎと座標y(x < y)から一跳びごとに負の方向にb進むうさぎがいる。

二匹のうさぎが同一の座標に移動することはあるか?あるなら何回跳んだ時にそうなるか?

考察

二匹の距離は、一跳び毎にa + b詰まっていきますので、最初の距離y - xa + bの倍数なら(y - xa + bで割り切れるなら)、座標が一致するタイミングが存在して、そこまでに跳んだ回数は(y - x) / (a + b)となります。

#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000001;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int x, y, a, b;
        cin >> x >> y >> a >> b;
        if ((y - x) % (a + b) != 0) {
            cout << -1 << endl;
        } else {
            cout << (y - x) / (a + b) << endl;
        }
    }
}