2025年度/令和7年度大学入学共通テスト 試作問題『情報Ⅰ』第3問 問1

リュディアです。引き続き試作問題の内容を詳細に解説しながら見ていきたいと思います。試作問題は次のリンクを参考にしています。

第3問

次の問い(問1~3)に答えよ。

問1

次の生徒(S)と先生(T)の会話文を読み,空欄(ア)に当てはまる数字をマークせよ。また,空欄(イ)~(エ)に入れるのに最も適当なものを,後の解答群のうちから一つずつ選べ。ただし,空欄(ウ)・(エ)は解答の順序は問わない。

S:この前,お客さんが460円の商品を買うのに,510円を払って,釣り銭を50円受け取っていたのを見て,授業で勉強したプログラミングで,そんな「上手な払い方」を計算するプログラムを作ってみたいと思いました。

T:いいですね。まず,「上手な払い方」とは何かを考える必要がありますね。

S:普通は手持ちの硬貨の枚数を少なくするような払い方でしょうか。

T:そうですね。ただ,ここでは,客が支払う枚数と釣り銭を受け取る枚数の合計を最小にする払い方を考えてみませんか? 客も店も十分な枚数の硬貨を持っていると仮定しましょう。また,計算を簡単にするために,100円以下の買い物とし,使う硬貨は1円玉,5円玉,10円玉,50円玉,100円玉のみで500円玉は使わない場合を考えてみましょう。例えば,46円をちょうど支払う場合,支払う枚数はどうなりますか?

S:46円を支払うには,10円玉4枚,5円玉1枚,1円玉1枚という6枚で払い方が最小の枚数になります。

T:そうですね。一方,同じ46円を支払うのに,51円を支払って釣り銭5円を受け取る払い方では,支払いに2枚,釣り銭に1枚で,合計3枚の硬貨のやり取りになります。こうすると交換する硬貨の枚数の合計が最小になりますね。

S:これが上手な払い方ですね。

T:そうです。このように,客と店が交換する硬貨の合計が最小となる枚数,すなわち「最小交換硬貨枚数」の計算を考えましょう。

S:どうやって考えればいいかなぁ。

T:ここでは,次の関数のプログラムを作り,それを使う方法を考えてみましょう。目標の金額を釣り銭無くちょうど支払うために必要な最小の硬貨枚数を求める関数です。

【関数の説明と例】

T:これは,例えば,枚数(46)=(ア)と計算してくれるような関数です。これを使って最小交換硬貨枚数の計算を考えてみましょう。例えば,46 円支払うのに,51 円払って5 円の釣り銭を受け取る払い方をした場合,客と店の間で交換される硬貨枚数の合計は,この関数を使うと,どのように計算できますか?

S:(イ)で求められますね。

T:一般に,商品の価格x 円に対して釣り銭y 円を0,1,2,...と変化させて,それぞれの場合に必要な硬貨の枚数の合計を

枚数(ウ)+枚数(エ)

と計算し,一番小さな値を最小交換硬貨枚数とすればよいのです。

S:なるほど。それで,釣り銭y はいくらまで調べればよいでしょうか?

T:面白い数学パズルですね。まあ,詳しくは今度考えるとして,今回は100円以下の商品なのでy は99 まで調べれば十分でしょう。

(イ)の解答群
0.枚数(51) + 枚数(5)
1.枚数(46) + 枚数(5)
2.枚数(51) - 枚数(5)
3.枚数(46) - 枚数(5)

(ウ)(エ)の解答群
0.x
1.y
2.x+y
3.x-y

<解説>
(ア)枚数(46)の値を求める問題です。枚数(価格)は価格に対して硬貨の枚数が最小となる支払い方法のときの硬貨枚数を返す関数です。価格46円の商品の支払いで硬貨枚数が最小となる支払い方法は 10円硬貨を4枚、5円硬貨を1枚、1円硬貨を1枚の合計6枚のときです。つまり枚数(46)=6となります。

(イ)本問題の最終的な目標は支払いとお釣りの双方で扱う硬貨数を最小とすることです。例えば46円の商品の支払いに51円=硬貨2枚で支払うとお釣りは5円=硬貨1枚で最小となります。合計で硬貨3枚になることを確認するには枚数(51) + 枚数(5)を使います。つまり(イ)の解答群の0です。

(ウ)と(エ)(イ)の内容を一般化すると支払う金額は「定価 + 釣銭」、お釣りは「釣銭」になるので枚数(定価 + 釣銭)+ 枚数(釣銭)が支払いとお釣りで発生した効果枚数を求める式になります。つまり枚数(x + y) + 枚数(y) が求める式です。つまり(ウ)は2、(エ)は1 が正解です。

今日はここまでとします。

では、ごきげんよう。

この記事が気に入ったらサポートをしてみませんか?