過去問解きまくり研究所 ホーム

平成22年度 秋期 午前 問7

アルゴリズム

ハッシュ法に関する問題

5けたの数 a₁a₂a₃a₄a₅ を,ハッシュ法を用いて配列に格納したい。ハッシュ関数を mod(a₁+a₂+a₃+a₄+a₅, 13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321 は次の配列のどの位置に入るか。ここで,mod(x, 13) の値は,x を13で割った余りとする。

〔図〕
  位置    配列
   0    ┌──────┐
   1    ├──────┤
   2    ├──────┤
   ⋮    │   ⋮    │
  11    ├──────┤
  12    └──────┘
(位置 0〜12 の13個の枠。⋮ は途中の省略)
答えと解説を見る

✓ これが正解イ2

解説

各けたの和15を13で割った余り2の位置に入ります。

ハッシュ法では、格納したいデータからハッシュ関数で値を1つ計算し、その値に対応する位置に入れます。ここでのハッシュ関数は、5けたの数のけたを1つずつ取り出して足し、その合計を13で割った余りを返すものです。足すのは数そのものではなく、各けたの数字である点に気をつけます。5と4と3と2と1を足すと15になり、15を13で割ると商が1、余りが2です。配列の枠は0から12までの13個で、番号は0から始まりますから、求めた余りの値がそのまま入る位置の番号になります。判定の軸は2つあります。足す対象がけたの数字であることと、割った余りを位置の番号としてそのまま読むことです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成22年度 秋期 基本情報技術者試験 午前 問7(改変:原典の図表をテキストに書き起こした)

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)