修了試験 2017-12-10実施分 基本情報技術者試験 問7
キーが小文字のアルファベット1文字(a,b,…,zのいずれか)であるデータを,大きさが10のハッシュ表に格納する。 ハッシュ関数として,アルファベットのASCIIコードを10進表記法で表したときの1の位の数を用いることにする。 衝突が起こるキーの組合せはどれか。 ASCIIコードでは,昇順に連続した2進数が,アルファベット順にコードとして割り当てられている。
正答4
解説
正解は4です。 ASCIIコードでは、小文字のaが10進で97で、そこからアルファベット順に1ずつ増えます。 ハッシュ値は10進表記の1の位なので、2つのキーのコードの差が10の倍数のときに衝突します。 【選択肢別解説】 1:× aは97でハッシュ値は7、iは105でハッシュ値は5です。 値が異なるので衝突しません。 2:× bは98でハッシュ値は8、rは114でハッシュ値は4です。 値が異なるので衝突しません。 3:× cは99でハッシュ値は9、lは108でハッシュ値は8です。 値が異なるので衝突しません。 4:○ dは100でハッシュ値は0、xは120でハッシュ値は0です。 ハッシュ値が一致するので衝突が起こります。 【計算】 dはaから3文字後なので、97+3=100です。 xはaから23文字後なので、97+23=120です。 コードの差は120-100=20で、10の倍数なので1の位が一致します。 【ポイント】 aのコード97を覚えていなくても、アルファベット順の差(何文字離れているか)が10の倍数かどうかで判定できます。 dとxは20文字離れています。まとめて解く
修了試験 2017-12-10実施分を通しで解く(80問)→