Official

A - アルバイトの給料計算 / Calculating Part-Time Job Pay Editorial by admin

Qwen3-Coder-480B

概要

各アルバイトスタッフのシフト回数から、会社が支払うべき給料の総額を計算する問題です。

考察

この問題では、各スタッフが働いたシフト回数 \(C_i\) に応じて、基本給に加えて特別手当がつくかどうかが決まります。
具体的には、シフト回数が \(K\) 回以上であれば、シフト1回あたりの給与が \(P + B\) 円となり、そうでなければ \(P\) 円となります。

したがって、各スタッフについて以下のどちらかの計算を行う必要があります: - \(C_i \geq K\) のとき:給与 = \(C_i \times (P + B)\) - \(C_i < K\) のとき:給与 = \(C_i \times P\)

この処理を全員分行えばよいので、特に難しい条件分岐や最適化も必要なく、素直にシミュレーションすれば解けます。
例えば、staff A が5回シフトに入り、閾値 \(K=5\) であれば特別手当がつくので、1回あたり \(P+B\) 円が適用されます。

アルゴリズム

  1. 入力から \(N, P, B, K\) および各スタッフのシフト回数 \(C_i\) を読み込む。
  2. 各スタッフに対して、以下のように給与を計算する:
    • シフト回数 \(C_i \geq K\) なら \(C_i \times (P + B)\)
    • それ以外なら \(C_i \times P\)
  3. 全員分の給与を合計し、出力する。

計算量

  • 時間計算量: \(O(N)\)
  • 空間計算量: \(O(N)\)

実装のポイント

  • 条件分岐 (if) を使って、特別手当の有無を正しく判定すること。

  • 合計金額を保持する変数は最初に 0 で初期化しておくこと。

    ソースコード

# 入力の受け取り
N, P, B, K = map(int, input().split())
C = list(map(int, input().split()))

# 給料の合計を計算
total_salary = 0
for c in C:
    if c >= K:
        # 特別手当が適用される場合
        total_salary += c * (P + B)
    else:
        # 基本給のみの場合
        total_salary += c * P

# 結果の出力
print(total_salary)

この解説は qwen3-coder-480b によって生成されました。

posted:
last update: