トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
ARC-018-A BMI
■■■問題■■■
ぼく、一目惚れをしました。昨日学内ですれ違った彼女の名前、
どうしても知りたいんです。いや、名前だけじゃない・・・!身長も体重も、彼女の全てが知りたい!
でも、僕には彼女に話しかける勇気なんてない。
彼女の体重は何kgなんだろうか・・・彼女の身長は何cmくらいなんだろうか・・・。
結局、一晩中彼女のことだけを考えてぜんぜん寝られていない。
さすがに女性にいきなり体重を聞くのは失礼だろう。そんなことは分かっている。
そんなものを聞いたりしたら、間違いなく嫌われてしまうだろう。
「うーむ、どうしたものか・・・ハッ!」
僕の脳内に稲妻が走った。そうだ、身長とBMI(※)を聞けばいいんだ。
そうしたら体重を逆算できる。名前はもうどうでもいいや、これは名案だ。
そうと決まれば、 身長[cm] と BMI[kg/m2] の2つの値に基づいて
体重[kg] を逆算してくれるプログラムを有能プログラマーである君に作ってもらいたい。
※ BMI[kg/m2] とは、ボディマス指数と呼ばれるもので、以下の計算式で与えられる。
ただし、Height と Weight はそれぞれ身長と体重のことである。
■■■入力■■■
Height BMI
●Height(120.0 <= Height <= 200.0) は、
プログラムに与えられる身長[cm]を表す実数である。小数点第1位まで与えられる。
●BMI(10.0 <= BMI <= 40.0) は、プログラムに与えられる BMI[kg/m2] を表す実数である。
小数点第1位まで与えられる。
■■■出力■■■
入力に基づいて逆算した体重 [kg] を一行に出力せよ。
出力は絶対誤差が(10の-2乗)以下であれば許容される。
なお、出力の最後には改行を入れること。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("160.0 23.5");
//60.160
//160cm=1.6mであることに注意せよ。
//出力誤差の許容範囲については、出力の項をよく見ること。
//出力誤差を満たしている出力ならば、
//例えば60.16や60.1600001、
//他にも誤差ギリギリではあるが
//60.17等の出力でも正答として扱われる。
}
else if (InputPattern == "Input2") {
WillReturn.Add("199.9 11.1");
//44.356
//体重[kg]を逆算すると、44.3556111kgとなる
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
decimal[] wkArr = InputList[0].Split(' ').Select(X => decimal.Parse(X)).ToArray();
decimal Height = wkArr[0];
decimal BMI = wkArr[1];
Console.WriteLine(BMI * (Height / 100M) * (Height / 100M));
}
}
解説
Decimal型を使って、ナイーブに計算してます。