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\) 円が適用されます。
アルゴリズム
- 入力から \(N, P, B, K\) および各スタッフのシフト回数 \(C_i\) を読み込む。
- 各スタッフに対して、以下のように給与を計算する:
- シフト回数 \(C_i \geq K\) なら \(C_i \times (P + B)\)
- それ以外なら \(C_i \times P\)
- 全員分の給与を合計し、出力する。
計算量
- 時間計算量: \(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: