トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

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型を使って、ナイーブに計算してます。