PR

基本情報技術者試験 令和6年度 科目A 公開問題(過去問) 問2 解説

基本情報技術者試験 令和6年度 科目A 公開問題(過去問) 問2 について解説します。

問題

問2 キーが小文字のアルファベット1文字(a, b, …, z のいずれか)であるデータを、 大きさが10のハッシュ表に格納する。ハッシュ関数として、アルファベットの ASCIIコードを10進表記法で表したときの1の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCIIコードでは、昇順に連続した2進数が、アルファベット順にコードとして割り当てられている。

ア a と i
イ b と r
ウ c と l
エ d と x

解説・解答

英小文字のASCIIコードは、a = 97 を起点に 1文字進むごとに +1 ずつ増えます。
したがって 1の位(= ASCIIコード mod 10)の並びは次の周期で回ります。

  • 97(a) → 7
  • 98(b) → 8
  • 99(c) → 9
  • 100(d) → 0
  • 101(e) → 1 … 122(z) → 2

このため、10文字離れた文字は同じ1の位になります。(97+10=107 など。)

それぞれの選択肢について確認します。

ア: a と i
a(97) → 97 mod 10 = 7
i(105) → 105 mod 10 = 5
⇒ 7 と 5 なので衝突しない。

イ: b と r
b(98) → 98 mod 10 = 8
r(114) → 114 mod 10 = 4
⇒ 8 と 4 なので衝突しない。

ウ: c と l
c(99) → 99 mod 10 = 9
l(108) → 108 mod 10 = 8
⇒ 9 と 8 なので衝突しない。

エ: d と x
d(100) → 100 mod 10 = 0
x(120) → 120 mod 10 = 0
⇒ 0で同じになって衝突する。

以上により、この問題の解答は「エ」になります。