【AtCoder】ABC 467 A - Obesity

A - Obesityatcoder.jp favicon

実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 76 / NoviSteps: 5Q / 配点: 100 点

問題概要

BMI[kg/m2]\mathrm{BMI}[\mathrm{kg}/\mathrm{m}^2] は以下の形式で計算される。

BMI=体重[kg]身長[m]×身長[m]\mathrm{BMI} = \frac{\text{体重}[\mathrm{kg}]}{\text{身長}[\mathrm{m}] \times \text{身長}[\mathrm{m}]}

日本では、BMI\mathrm{BMI}25  kg/m225 \; \mathrm{kg}/\mathrm{m}^2 以上の人は肥満とされる。 身長 H[cm]H[\mathrm{cm}]、体重 W[kg]W[\mathrm{kg}] の人が日本で肥満とされるかどうかを判定せよ。

制約

  • 1H3001 \leq H \leq 300
  • 1W3001 \leq W \leq 300
  • 入力される値はすべて整数

考察

入力において、身長 HHcm\mathrm{cm} 単位で与えられるので、m\mathrm{m} 単位に変換する必要がある

したがって、条件を入力形式に合わせると以下のように変形できる。

BMI25    W(H100)225    10000W25H2\begin{align*} \mathrm{BMI} \geq 25 & \iff \frac{W}{\left( \tfrac{H}{100} \right)^2} \geq 25 \\ & \iff 10000 W \geq 25 H^2 \\ \end{align*}

あとはこれをif文で判定すればよい。

実装例

CPP
1.#include <bits/stdc++.h>
2.using namespace std;
3.
4.// ======================================== //
5.
6.int main()
7.{
8. int H, W;
9. cin >> H >> W;
10.
11. if (W * 10000 >= 25 * H * H) {
12. cout << "Yes" << endl;
13. }
14. else {
15. cout << "No" << endl;
16. }
17.
18. return 0;
19.}
atcoder.jp favicon

実装時間: 5 分以内

コメント

公式解説によると、小数のままで判定すると落ちるケースが含まれているらしい。

A問題でここまで小数対策されているのは珍しいかも。