ITパスポート 2012年 秋期 問65
問題文
“商品値引き”表に示すとおり、値引き率が異なる商品群がある。30個買ったときに最も合計価格が安いのは、どのIDの商品か。ここで、値引き数量以上の個数を購入した場合に、合計価格に対して値引率で示す値引きが適用されるものとする。

選択肢
ア:0001
イ:0002
ウ:0003(正解)
エ:0004
🔒 解説は解答すると表示されます
商品値引き【ITパスポート 解説】
正解の理由
理由は、30個購入したときに合計金額が最も小さくなるのが0003だからです。0003は「値引き数量(個)」が20個で、30個は条件(20個以上)を満たします。さらに「値引き率(%)」は50%と非常に大きく、結果として合計金額が最も安くなります。
解法ステップ
まず、用語をかんたんに説明します。
- 単価:1個あたりの価格(円)。
- 値引き数量:その個数以上買うと値引きが適用される閾値(しきいち)。
- 値引き率(%):合計価格に対して何%引くか。例えば50%はとして計算します。
問題のルール:
「値引き数量以上の個数を購入した場合に、合計価格に対して値引率で示す値引きが適用される」
つまり、購入個数(ここでは30個)が閾値以上なら、合計に対して割引を掛けます。
「値引き数量以上の個数を購入した場合に、合計価格に対して値引率で示す値引きが適用される」
つまり、購入個数(ここでは30個)が閾値以上なら、合計に対して割引を掛けます。
一般式:
- 閾値を満たす場合:
- 閾値を満たさない場合:
各商品の計算(30個購入):
-
0001:単価30円、閾値30、値引率30%
閾値を満たす(30≥30)ので割引適用。
円 -
0002:単価25円、閾値40、値引率40%
閾値を満たさない(30<40)ので割引なし。
円 -
0003:単価40円、閾値20、値引率50%
閾値を満たす(30≥20)ので割引適用。
円 -
0004:単価35円、閾値35、値引率60%
閾値を満たさない(30<35)ので割引なし。
円
比較すると最小は0003の600円。よって正解は ウ です。
(補助的な見方)各商品の実質単価(閾値を満たす場合は割引後の単価、満たさない場合はそのままの単価)を計算すると:
- 0001:30円×(1−0.30)=21円(適用) → 合計630円
- 0002:25円(不適用) → 合計750円
- 0003:40円×(1−0.50)=20円(適用) → 合計600円
- 0004:35円(不適用) → 合計1050円
選択肢別の誤答解説
-
ア: 0001
0001は割引後の単価が21円で合計630円。0003の600円より高いため誤りです。間違いやすい理由:閾値を満たしているため割引が効くが、割引率が0003ほど大きくない点を見落とすこと。 -
イ: 0002
0002は単価が安く見えますが、閾値が40個で今回の購入数30個は満たさないため割引が受けられず、合計は750円になります。閾値条件を見落として「値引き率が40%だから有利」と考えると誤ります。 -
ウ: 0003
正解。閾値20個を満たし、50%の大幅割引で合計が最も小さくなります。 -
エ: 0004
値引き率が60%と大きいですが、閾値が35個で今回の30個は未満のため割引は不適用。合計は1050円で最も高くなります。閾値を満たすかどうかの確認がポイントです。
よくある誤解
-
割引は「1個ずつ」に適用されると誤解する
実際は「合計価格」に対して割引率を掛けますが、合計に対して一括で割引することは、個あたりで見ると単価に割引を適用したのと等しくなります(今回のように計算可能)。 -
値引き数量と値引き率を混同する
値引き数量は「何個以上で割引が適用されるか」の条件で、値引き率はどれだけ割り引くかです。特に閾値を満たしていない場合は、値引き率が大きくても割引は受けられません。 -
小数・パーセントの変換ミス
50%を0.50と換算するのを忘れ、50倍してしまうミスがあります。パーセントは100で割って小数に直してください。
補足コラム
「閾値を満たすか?」の確認を最初にするだけでケアレスミスは減ります。実務でも「何個以上で割引」の条件はよくあるので、次の簡単な手順がおすすめです:
- 購入個数と値引き数量を比較する。
- 閾値を満たすなら「実質単価」=単価×(1−値引率) を計算。満たさないなら単価そのまま。
- 実質単価×購入個数で合計を出し、最小を選ぶ。
簡単な計算例(Python):
products = [
("0001", 30, 30, 0.30),
("0002", 25, 40, 0.40),
("0003", 40, 20, 0.50),
("0004", 35, 35, 0.60),
]
qty = 30
for pid, price, thresh, rate in products:
if qty >= thresh:
total = price * qty * (1 - rate)
else:
total = price * qty
print(pid, total)
# 出力で0003が最小になる
FAQ
Q1. 「値引き数量以上」の「以上」はどう扱う?
A1. 「以上」は >=(以上を含む)です。今回の0001は閾値30で購入数30なので割引が適用されます。
A1. 「以上」は >=(以上を含む)です。今回の0001は閾値30で購入数30なので割引が適用されます。
Q2. 割引後の合計は小数になることはありますか?端数処理は?
A2. この問題では円未満の端数処理の指定がないため、計算通りの金額(ここではすべて整数)を使います。実務では端数処理(切り捨て、四捨五入など)を明示する場合があります。
A2. この問題では円未満の端数処理の指定がないため、計算通りの金額(ここではすべて整数)を使います。実務では端数処理(切り捨て、四捨五入など)を明示する場合があります。
Q3. 「合計価格に対して値引き」と「各単価を値引き」は同じですか?
A3. 結果的には同じです。合計に対して一括で割引すると、1個あたりの実質単価が同じ割合で下がります。
A3. 結果的には同じです。合計に対して一括で割引すると、1個あたりの実質単価が同じ割合で下がります。
関連キーワード: 値引き、値引き数量、値引き率、単価、合計価格、割合計算、閾値判定、数量割引、端数処理、実質単価

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

