図1は、目標金額ちょうどになる最小の硬貨枚数を計算するプログラムのフローチャートの一部です。空欄(キ、ク、ケ、コ)を埋める適切な選択肢を解答群から選択します。
2025/7/3
1. 問題の内容
図1は、目標金額ちょうどになる最小の硬貨枚数を計算するプログラムのフローチャートの一部です。空欄(キ、ク、ケ、コ)を埋める適切な選択肢を解答群から選択します。
2. 解き方の手順
* (1) `Kouka`は硬貨の額面を表す配列です。
* (2) `kingaku`は目標金額を表します。
* (3) `maisu`は硬貨の枚数を格納する変数で、初期値は0です。`nokori`は目標金額から使用した硬貨の額面を引いた残り金額で、初期値は`kingaku`です。
* (4) `i` を**キ**ながら繰り返す: `i` は配列`Kouka`のインデックスを表し、硬貨の額面が大きい順に処理していく必要があるため、インデックスは大きい方から小さい方へ減らしていく必要があります。
* (5) `maisu` = **ク** + **ケ**: 最小枚数を求めるためには、現在の`nokori`で最大の硬貨をできるだけ多く使う必要があります。そのため、`nokori`を`Kouka[i]`で割った商を`maisu`に足し、割った余りを新しい`nokori`とします。`maisu`に商を足す必要があるので、**ク**は`maisu`でないといけません。**ケ**は`nokori`を`Kouka[i]`で割った商でなければならないので`nokori ÷ Kouka[i]`となります。
* (6) `nokori` = **コ**: `nokori`は、残りの金額を表します。硬貨を使った後に残った金額を更新する必要があるので、`nokori`を`Kouka[i]`で割った余りを`nokori`に代入します。つまり`nokori % Kouka[i]`を代入する必要があります。
* (7) 表示する (maisu): 最終的に計算された硬貨の枚数`maisu`を表示します。
したがって、
* キ: `i`を 5から1まで1ずつ減らしながら繰り返す (選択肢 ⑤)
* ク: `maisu` (選択肢 ①)
* ケ: `nokori ÷ Kouka[i]` (選択肢 ⓪)
* コ: `nokori % Kouka[i]` (選択肢 ①)
3. 最終的な答え
キ: ⑤
ク: ①
ケ: ②
コ: ①