この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

1円玉・5円玉・10円玉でちょうどn円にする組み合わせ数を求めるプログラムのwhile条件を問う問題です。プログラムの構造:10円玉を0枚・1枚・2枚…と順に使っていき、残額restに対して「1円玉と5円玉だけでrest円にする組み合わせ数 = (rest ÷ 5 の商) + 1」を加算していきます。問題の例(n=12)で検証:rest=12のとき(10円玉0枚)→組み合わせ = 12÷5の商+1 = 2+1 = 3通り。次にrest=2のとき(10円玉1枚)→組み合わせ = 2÷5の商+1 = 0+1 = 1通り。次はrest=-8となり無効。なので while の条件は「restが0以上の間継続」つまり rest ≧ 0 が正解です。rest=0のとき(全額を10円玉で支払う場合):0÷5の商+1 = 0+1 = 1通り(1円玉0枚・5円玉0枚)。rest=0でも有効な組み合わせが存在するため ≧ 0(以上)が正しく、> 0(より大きい)では rest=0 の場合を見落とします。境界値(rest=0)を含めるかどうかが判断のポイントです。

なぜ他の選択肢は違うのか

選択肢 イ
「rest ≧ 5」とすると、restが0〜4の間での組み合わせが計算されません。例えばrest=2(10円玉1枚使用後)のとき1円玉2枚という有効な組み合わせが無視されます。5円玉を使わずに1円玉だけで作れる場合も含める必要があります。
選択肢 ウ
「rest ≧ 10」とすると、10円未満の残額での組み合わせが全て無視されます。例えば12円の例ではrest=2のとき1通りが計算されなくなり、結果が3のみとなって正しい4が得られません。
選択肢 エ
「rest > 0」はrest=0の場合を除外します。rest=0のとき「1円玉0枚・5円玉0枚・10円玉全て」という有効な組み合わせが1通り存在します。10円ちょうどのnではこれを除外すると不正解になります。
選択肢 オ
「rest > 5」はrestが0〜5の場合を除外します。「rest ≧ 5」よりさらに制限が厳しく、rest=5の1円玉0枚・5円玉1枚の組み合わせも見逃します。
選択肢 カ
「rest > 10」はrest=10以下を全て除外します。最も制限が厳しく、多くの有効な組み合わせを見逃します。

解くときのポイント

境界値に注意:「≧ 0」と「> 0」の違いはrest=0のとき。1円玉・5円玉を1枚も使わず10円玉だけで全額支払う組み合わせ(rest=0)が有効かどうかを確認。具体例でトレースして境界値を検証する。