応用情報技術者試験 令和元年秋 午前問1 解説付き過去問
問題
あるホテルは客室を1,000部屋もち、部屋番号は、数字4と9を使用しないで0001から順に数字4桁の番号としている。
部屋番号が0330の部屋は、何番目の部屋か。
正解
解説
この問題は、特定の数字(4と9)を除外して桁ごとの番号付けを行った場合に、ある番号が全体の中で何番目に該当するかを求めるものです。
4と9を除外することにより、使える数字は0~9のうち、0~9から4と9を除いた8種類(0,1,2,3,5,6,7,8)となります。
- 使用可能な数字の確認
0~9のうち、4と9を使わないため、使用可能な数字は8個です。
それぞれの桁に使える数字の数が限定されるため、通常の10進数とは異なる「8進数に似た体系」で番号が進むことになります。 - 4桁の部屋番号の構造
部屋番号は0001から始まり、4桁で表されます。
桁ごとに0~9のうち8個の数字のみを使うため、使える数字の並び順に番号を付けていきます。
使用可能な数字の順序を、0→1→2→3→5→6→7→8 と定め、この順序に従って数値を解釈します。 - 対象の番号(0330)の変換
部屋番号0330を、使える数字の並びを基に「8進数風」に番号変換します。
各桁ごとに、使用可能な数字のインデックスを求め、それを8進数のように重み付けして計算します。
使用可能な数字:0,1,2,3,5,6,7,8
⇒ 各桁の値(左から)0,3,3,0 は、インデックス順に変換すると:
・0 ⇒ 0番目
・3 ⇒ 3番目
・3 ⇒ 3番目
・0 ⇒ 0番目
よって、番号は以下のように計算されます:
0 × 8³ + 3 × 8² + 3 × 8¹ + 0 × 8⁰ = 0 + 192 + 24 + 0 = 216
ただし、「0001」が1番目であるため、216番目に対応するのは「0330」になります。
したがって、「0330」はこのホテルにおける216番目の部屋です。