問題
問題文
収縮期血圧 $A$ と拡張期血圧 $B$ が与えられます。
平均血圧 $C$ を求めてください。
ただし、平均血圧は以下のように定義されるとします。
・$C=\frac{A-B}{3}+B$
制約
・$50 \le B \le A le 300$
・入力に含まれる値は全て整数である
回答
回答1 (AC)
問題文通りに計算すれば良いでしょう。ただし計算結果は小数になることがあるので、コーディングに注意が必要です。今回の場合、単に (a-b)/3 とかくと計算結果は整数になってしまうので、(a-b)/3.0 または (float)(a-b)/3 とかく必要があります。コードは以下のようになりました。
abc211a-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
float c = (float)((a-b)/3+b);
cout << c << endl;
}
おまけ
問題文に記述されていた平均血圧の計算法を調べたところ、実際の計算式を利用していたことがわかりました。ここで気になるのは、平均血圧というなのに、(a+b)/2 という計算式ではないところです。これについても調べてみたところ、最高血圧時の血量は少なく最低血圧時の血量は多いので、それを加味して3で割っているとのことでした。
調べたこと
AtCoder の解説 → 公式解説
回答1と同じ方針でした。
リンク
前後の記事
- 前の記事 → AtCoderログ:0035 - ABC 087 B
- 次の記事 → AtCoderログ:0037 - ABC 105 B