A - Obesity 解説
by
vwxyz
AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
原案:vwxyz
\(H[\mathrm{cm}]\) を メートルに変換すると \(\frac{H}{100}[\mathrm{m}]\) なので、問題文の定義に従うと、
\(\mathrm{BMI}[\mathrm{kg}/\mathrm{m}^2]=\frac{10^4 \times W}{H^2}[\mathrm{kg}/\mathrm{m}^2]\)
です。
これが \(25\) 以上かどうかを判定すればよいです。
式変形 をすると、
\(10^4 \times W \geq 25 \times H^2\)
\(400 \times W \geq H^2\)
となります。
これを実装すればよいです。
補足
A 問題としてはやや発展的な話になりますが、\(\frac{10^4 \times W}{H^2} \geq 25\) をそのまま小数型などで比較しようとすると、誤差の問題が生じます。
本問題では制約から \(H,W\) がそれほど大きな値にはならず、\(25.0\) が浮動小数点で正確に表せるため、\(\frac{10^4 \times W}{H^2}\) と \(25\) を比較であれば AC できる可能性が高いですが、整数同士の比較にした方が安全です。
\(\frac{W}{(\frac{H}{100})^2}\) と \(25\) を比較しようとすると WA になるテストケースが入っています。
c++の実装例
#include <bits/stdc++.h>
using namespace std;
int main(){
int H,W;
cin>>H>>W;
string ans;
if(400*W>=H*H){
ans="Yes";
}
else{
ans="No";
}
cout<<ans<<"\n";
}
Pythonの実装例
H,W=map(int,input().split())
if 400*W>=H*H:
ans="Yes"
else:
ans="No"
print(ans)
投稿日時:
最終更新:
