次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。…
科目B アルゴリズムとプログラミング 科目B 問2
次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。関数change は,10 より大きい整数を引数n で受け取り,1 円玉,5 円玉,10 円玉を使ってちょうどn 円にする組合せの総数を返す。例えば,12 円にする組合せは,次のように数えられる。10 円玉を使わない場合には,1 円玉と5 円玉だけでちょうど12 円にすることになる。その組合せは,使える5円玉の枚数が0 以上 (12 ÷ 5 の商) 以下なので,(12 ÷ 5 の商) + 1 = 3 通りある。同様に,10 円玉を1 枚使う場合には,1 円玉と5 円玉だけでちょうど2 円にすることになり,その組合せは (2 ÷ 5 の商) + 1 = 1 通りある。10 円玉を2 枚以上使う組合せはない。よって,1 円玉,5 円玉,10 円玉を使ってちょうど12 円にする組合せは,3 + 1 = 4 通りである。
正答 ア
正答は ア。rest ≧ 0 です。
【考え方】
10 円玉を k 枚使うと、残りの rest = n - 10k 円を 1 円玉と5 円玉で払うことになり、その組合せは(rest ÷ 5 の商)+ 1 通りです。
プログラムは k=0,1,2,… の順に、rest を 10 ずつ減らしながら
この数を count に足していきます。
rest が 0 のとき(10 円玉だけでちょうど払えるとき)も、「1 円玉も 5 円玉も使わない」1 通りがあるので、rest が 0 以上の間は繰り返す必要があります。rest が負になったら、10 円玉が多すぎるので終了します。
解説の続きをみる続きを閉じる
【トレース(n=12)】
1回目 rest=12 count=0 + 2 + 1=3 rest←2
2回目 rest=2 count=3 + 0 + 1=4 rest←-8
rest=-8 で条件が偽になり、4 を返します(問題文の例と一致)。
【トレース(n=20)】
1回目 rest=20 count=0 + 4 + 1=5 rest←10
2回目 rest=10 count=5 + 2 + 1=8 rest←0
3回目 rest=0 count=8 + 0 + 1=9 rest←-10
→ 9 通り(10 円玉 0 枚で 5 通り、1 枚で 3 通り、2 枚で 1 通り)
【ほかの選択肢】
エ rest > 0 誤り
→ n=20 では rest=0 の回(10 円玉 2 枚の 1 通り)を数えず 8
イ rest ≧ 5 誤り
→ n=12 では rest=2 の回(10 円玉 1 枚+1 円玉 2 枚)を数えず 3
オ rest > 5 誤り
→ n=12 で 3
ウ rest ≧ 10 誤り
→ n=12 で 3
カ rest > 10 誤り
→ n=12 で 3。n=20 でも rest=10 の回から先を数えず 5
どれも、残りが 5 円未満や 0 円になる場合を数え落とします。
出典:令和7年度 基本情報技術者試験 科目B 公開問題 問2(独立行政法人情報処理推進機構)出典元ページ
最終更新日
「科目B アルゴリズムとプログラミング」のほかの問題
- 2024年度(令和6年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問3次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問4次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問5次のプログラム中の [a] ~ [c] に入れる正しい答えの組合せを,解答群の中から選べ
- 2026年度(令和8年度)公開問題 科目B 問1次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2026年度(令和8年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
スポンサーリンク





