けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

JOI 一次予選 2022 (第 3 回) B - アイスクリーム (7Q, 難易度 2)

整数の切り上げの問題。意外と正確に解くのは大変かもしれない。

問題概要

ベースとなるアイスクリームの金額は 250 円で、高さは  A cm である。追加のアイスクリームは 1 個につき 100 円で、1 個追加するごとにアイスクリームタワーの高さが  B cm 増える。

この店で高さが  S cm 以上のアイスクリームタワーにするために必要な最小コストを求めよ。

制約

  •  1 \le S, A, B \le 100

考えたこと

追加で必要なアイスクリームの個数 need を求めよう! それが求められれば答えは


250 + 100 * need (円)


となる。

まず、 A \le S のときは何もする必要がないので need = 0 である。

 A \gt S のときは、いわゆる「切り上げ処理」となる。切り上げ処理については、次の記事を参照。

drken1215.hatenablog.com

増やすべき高さの差分は、 S - A であり、 B ずつ増やしていくとき、増やすべき高さを充足するために必要な個数 need

need = (S - A + B - 1) / B

と求められる。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int S, A, B, need;
    cin >> S >> A >> B;

    if (A >= S) need = 0;
    else need = (S - A + B - 1) / B;
    cout << 250 + 100 * need << endl;
}