Official

A - うさぎとかめ / The Tortoise and the Hare Editorial by KoD


うさぎがゴールするまでにかかる時間は \(C + \frac{X}{A}\) 秒です。かめがゴールするまでにかかる時間は \(\frac{X}{B}\) 秒です。これらを比較すれば答えが求められます。

いくつかの言語では、整数同士の除算の結果は切り捨てられた値になります。除算を用いずに大小を比較するため、不等式を変形しましょう。

\[\begin{aligned} C + \frac{X}{A} &< \frac{X}{B} \\ \Leftrightarrow ABC + BX &<AX \end{aligned}\]

\(C + \frac{X}{A} = \frac{X}{B}, C + \frac{X}{A} > \frac{X}{B}\) についても同様の変形ができます。結局、\(ABC + BX\)\(AX\) の比較に帰着されました。これを if 文を用いて実装すればよいです。

実装例 (C++) :

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

int main() {
    int x, a, b, c;
    cin >> x >> a >> b >> c;
    // c + x / a, x / b
    // abc + bx, ax
    const int h = a * b * c + b * x, t = a * x;
    if (h < t) {
        cout << "Hare\n";
    } else if (h > t) {
        cout << "Tortoise\n";
    } else {
        cout << "Tie\n";
    }
}

posted:
last update: