はまやんはまやんはまやん

hamayanhamayan's blog

Vapor Pressure [第七回 アルゴリズム実技検定 B]

https://atcoder.jp/contests/past202107-open/tasks/past202107_b

解説

https://atcoder.jp/contests/past202107-open/submissions/24459788

シミュレーション問題。
計算一本でも求めることができるが、言われているシミュレーションを動かすことでも求めることができる。
「ボールの数が風船の数のC倍以下になる」が満たされるようになるまでボールを1つずつ減らしていき、
最終的なA÷Bが答えになる。

C++では注意点として整数としてABCを受け取った場合、単純にA/Bとすると答えは整数値となり、切り捨てのような動作となる。
よって、1.0を事前に書けるか、明示的なキャスト(double)を利用して計算結果がdoubleになるようにする必要がある。

小数の答え方も独特なので注意しよう。
小数点以下10位くらいで自分はいつも答えている。

int A, B, C;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> C;
    while (!(A <= B * C)) A--;
    double ans = 1.0 * A / B;
    printf("%.10f\n", ans);
}