正解は ア
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)を含めるかどうかが判断のポイントです。
境界値に注意:「≧ 0」と「> 0」の違いはrest=0のとき。1円玉・5円玉を1枚も使わず10円玉だけで全額支払う組み合わせ(rest=0)が有効かどうかを確認。具体例でトレースして境界値を検証する。