アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20170122 実施分 問7

10進法で5桁の数a1 a2 a3 a4 a5を,ハッシュ法を用いて配列に格納したい。ハッシュ関数をmod(a1+a2+a3+a4+a5,13)とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は配列のどの位置に入るか。ここで,mod(x,13)は,xを13で割った余りとする。
配列の図。位置0,1,2,…(省略),11,12の縦に並んだ枠(空欄)。見出しは「位置」「配列」。
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20170122 実施分 問7(問題文は IPA の公開問題。解説は当サイト作成)

答えと解説を見る

正解:イ

覚える知識

ハッシュ関数によるハッシュ値計算

ハッシュ法はキーにハッシュ関数を適用した値を格納位置とする探索法である。

この問題で必要なこと

54321の各桁和は5+4+3+2+1=15で、15 mod 13=2。よって位置2に格納される。

ひっかけ

桁和15そのものや、54321 mod 13 を計算してしまう取り違えが誤りを誘う。

この知識の出題:本試験系 5 回・免除試験 11 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「ハッシュ法と衝突の扱い」で学ぶ

同じ知識の過去問