けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 177 A - Don't be late (灰色, 100 点)

double 型を使いたくなる問題。実は使わなくても解ける。

問題概要

 D メートル離れた場所で待ち合わせがある。残り時間は  T 分である。

分速  S メートルで向かうとき、待ち合わせ時間に間に合うか?

解法

分速  S メートルで  D メートル進むのに要する時間は

 \displaystyle \frac{D}{S}

と求められる。よって、待ち合わせに間に合う条件は

 \displaystyle \frac{D}{S} \le T

と書ける。これを実装すれば AC できるが......左辺は整数とは限らず、一般には小数になることに注意しよう。double 型などを用いて計算できる。

整数だけで済ませる

しかし一般論として、double 型には誤差がつきものである。可能ならば、整数型だけで処理を済ませたいのだ。今回はそれが可能だ。上の不等式で、両辺に  S をかけると

 \frac{D} \le TS

となる。これなら、整数型の範囲で判定可能だ!

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

int main() {
    int D, T, S;
    cin >> D >> T >> S;
    if (D <= T * S)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}