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

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

第3問

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

問2

次の文章の空欄(オ)~(コ)に入れるのに最も適当なものを,後の解答群のうちから一つずつ選べ。

S:まずは,関数「枚数(金額)」のプログラムを作るために,与えられた金額ちょうどになる最小の硬貨枚数を計算するプログラムを考えてみます。もう少しヒントが欲しいなぁ。

T:金額に対して,高額の硬貨から使うように考えて枚数と残金を計算していくとよいでしょう。また,金額に対して,ある額の硬貨が何枚まで使えて,残金がいくらになるかを計算するには,整数値の商を求める演算『÷』とその余りを求める演算『%』が使えるでしょう。例えば,46円に対して10円玉が何枚まで使えるかは(オ)で,その際にいくら残るかは(カ)で求めることができますね。

S:なるほど!あとは自分でできそうです。

Sさんは,先生(T)との会話からヒントを得て,変数kingakuに与えられた目標の金額(100円以下)に対し,その金額ちょうどになる最小の硬貨枚数を計算するプログラムを考えてみた(図1)。ここでは例として目標の金額を46円としている。

配列Koukaに硬貨の額を低い順に設定している。なお,配列の添字は0から始まるものとする。最低額の硬貨が1円玉なのでKouka[0]の値は1となる。

先生(T)のヒントに従い,高額の硬貨から何枚まで使えるかを計算する方針で,(4)~(6)行目のような繰返し文にした。この繰返しで,変数maisuに支払いに使う硬貨の枚数の合計が計算され,変数nokoriに残りいくら支払えばよいか,という残金が計算される。

実行してみると6が表示されたので,正しく計算できていることが分かる。いろいろな例で試してみたが,すべて正しく計算できていることを確認できた。

(1) Kouka = [1,5,10,50,100]
(2) kingaku = 46
(3) maisu = 0, nokori = kingaku
(4) i を (キ)ながら繰り返す:
(5)  maisu = (ク)+(ケ)
(6)  nokori =(コ)
(7) 表示する(maisu)

図1 目標の金額ちょうどになる最小の硬貨枚数を計算するプログラム

(オ)、(カ)の解答群
0.46 ÷ 10 + 1
1.46 % 10 - 1
2.46 ÷ 10
3.46 % 10

(キ)の解答群
0.5から1まで1ずつ減らし
1.4から0まで1ずつ減らし
2.0から4まで1ずつ増やし
3.1から5まで1ずつ増やし

(ク)の解答群
0.1
1.maisu
2.i
3.nokori

(ケ)、(コ)の解答群
0.nokori ÷ Kouka[i]
1.nokori % Kouka[i]
2.maisu ÷ Kouka[i]
3.maisu % Kouka[i]

<解説>

問2で実際のプログラミングが登場しました。配列 Kouka の要素は次のように小さい金額から順に硬貨の額面が設定されています。

Kouka[0] = 1
Kouka[1] = 5
Kouka[2] = 10
Kouka[3] = 50
Kouka[4] = 100

また事前知識として2つの演算子÷と%も知っておく必要があります。除算と剰余算と呼ばれるもので、簡単に書くと割り算の演算子と、余りを求める演算子です。では順に見ていきましょう。

(オ)(カ)金額=46円に対して10円硬貨を何枚使えるか、金額=46円に対し10円硬貨をある枚数だけ使った後に何円残るかを求める問題なので、除算と剰余算を使います。つまり(オ)46÷10、(カ)46%10 が答えになります。

(キ)プログラム中のループ(繰り返し)処理の方法についてですね。硬貨数を最小にするには高額の硬貨から調べていく必要があります。配列 Kouka は 0 から 4 まで使っており高額の硬貨から調べるということは配列の要素番号 4 から 0 まで要素番号を小さくしながら確認するということです。正解は解答群の1です。

(ク)(ケ)(コ)
プログラミングで特徴的な記述方法を確認する問題です。maisu は現在までの硬貨枚数の合計を持つ変数です。ループの今現在のKouka[i] を使える枚数は nokori ÷ Kouka[i] です。

maisu = maisu + (nokori ÷ Kouka[i]) は今まで保持していた maisu に (nokori ÷ Kouka[i]) を加えて、maisu に上書きしなさいという意味です。プログラミングに特徴的で重要な記述方法ですので知っておいてください。正解は(ク)1、(ケ)0になります。

nokori についても同じで nokori = nokori % Kouka[i] と書きます。これも同様にnokori % Kouka[i] で残金を計算して、再度 nokori に上書きする記述方法です。正解は(コ)1 になります。

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

では、ごきげんよう。

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