Day 004 — 入出力・四則演算(3問目・最終)

2026-04-11 灰色 / Phase 1 ★☆☆☆☆ 入出力・四則演算

問題

太郎くんは N 冊の本を買おうとしています。1冊の定価は P 円ですが、10冊以上まとめて買うと 1冊あたり D 円の割引 が適用されます。太郎くんが支払う合計金額を求めてください。

入力形式

N P D

制約

$1 \le N \le 100$
$1 \le P \le 10000$
$1 \le D \le P$
入力はすべて整数

入出力例

入力例 1

5 1000 200

出力例 1

5000

入力例 2

12 1000 200

出力例 2

9600

入力例 3

10 500 100

出力例 3

4000
  • 例1: 10冊未満なので割引なし → 5×1000=5000
  • 例2: 12冊×(1000-200)=12×800=9600
  • 例3: ちょうど10冊なので割引あり → 10×400=4000

ヒント (段階的開示)

ヒント1: 方向性
「N が10以上かどうか」で計算式を変える必要がある。条件によって処理を分ける書き方を考えよう。
ヒント2: アプローチ
if 文で2ケースに分岐。N < 10: 合計=N×P / N >= 10: 合計=N×(P-D)。
ヒント3: 誘導
N, P, D = map(int, input().split())

if N >= 10:
    price = P - D
else:
    price = P

print(N * price)

模範解答 (Python)

N, P, D = map(int, input().split())

if N >= 10:
    price = P - D
else:
    price = P

print(N * price)

Step-by-Step 解説

1複数の整数を1行で受け取る
N, P, D = map(int, input().split()) でアンパック代入。
2条件分岐で1冊あたりの価格を決定
「10冊以上」は >= 10 で表現する。> 9 でも正しいが、意図が伝わる >= 10 が良い。
3合計金額を計算して出力
print(N * price)

よくあるミス

ミス原因正しい書き方
N, P, D = input().split()文字列のまま代入map(int, ...)
if N > 10:10冊の場合が漏れるif N >= 10:
print(N * P - D)Dを1回しか引かないprint(N * (P - D))

次のステップ

  • 発展: 「10冊ごとに割引」というより複雑な割引計算
  • 次回予告: テーマ2「条件分岐(if/elif/else)」

自己評価

自分の回答

気づき・メモ