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

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

JOI 一次予選 2025 第 2 回 B - 鉄道旅行 3 (8Q, 難易度 2)

if 文の練習問題

問題概要

ビ太郎は JOI 鉄道に乗って旅行をする。JOI 鉄道の運賃ははじめの  P km までは 1 km あたり  A 円で、それ以降の運賃は 1 km あたり  B 円で計算される。

 Q km 乗車するとき、運賃はいくらになるか出力せよ。

解法

距離が  P 以下かどうかで状況が変わるので、場合分けしよう!!

 Q \le P のとき

距離が  P km 以下なので、この場合は 1 km あたり  A 円と計算してよい。よって、

 A \times P

である。

 Q \gt P のとき

距離  P km までの分は、 1 km あたり  A 円なので、 A \times P 円である。

それ以降の  Q - P km の分は、1 km あたり  B 円なので、 B \times (Q - P) 円である。

これらを合計して、運賃は

 A \times P + B \times (Q - P)

である。

まとめ

以上を整理して、次のように考えられる。

  •  Q \le P のとき: A \times P
  •  Q \gt P のとき: A \times P + B \times (Q - P)

プログラムでは、if 文を用いて処理を分岐すればよい。

コード

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

int main() {
    int P, Q, A, B;
    cin >> P >> Q >> A >> B;

    if (Q <= P) cout << A * Q << endl;
    else cout << A * P + B * (Q - P) << endl;
}