平成25年度 春期 午前 問7
アルゴリズム
ハッシュ法に関する問題
10 進法で 5 桁の数 a₁a₂a₃a₄a₅ を,ハッシュ法を用いて配列に格納したい。ハッシュ関数を mod(a₁+a₂+a₃+a₄+a₅,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321 は配列のどの位置に入るか。ここで,mod(x,13) は,x を 13 で割った余りとする。
〔図〕配列(字で書き起こしたもの)
位置 配列 0 [ ] 1 [ ] 2 [ ] ⋮ ⋮ 11 [ ] 12 [ ]
- ア1
- イ2
- ウ7
- エ11
答えと解説を見る
✓ これが正解イ2
解説
各桁の和15を13で割った余りの2に入ります。
この問の要点は、ハッシュ関数の中身をそのまま読むことです。設問の関数は、5つの桁の値を足したものを13で割った余りを返す、と書かれています。ですから最初にするのは、対象の数を桁ごとにばらして足すことです。5と4と3と2と1を足すと15になります。次にその15を13で割ります。13は1回だけ引けて、残るのは2です。この余りがそのまま格納する位置になります。判定の軸は一つで、13で割る相手が桁の和になっているかどうかを見ます。配列の位置が0から12までの13個で用意されているのも、13で割った余りが必ずその範囲に収まるからで、求めた値が範囲に収まっていることは確かめに使えます。
ほかの選択肢はなぜ違うのか
- ア1:各桁を足した15を13で割っても、もとの数をそのまま13で割っても、この値は現れません。配列の先頭寄りの位置を指す数ですが、設問の式からは導けません。
- ウ7:54321という数を桁に分けずに、そのまま13で割ったときの余りです。割る前に各桁を足すという手順を飛ばすと、この値に落ちます。
- エ11:配列の終わり近くの位置を指す数です。各桁の和15からも、54321そのものからも、13で割る限りこの余りは出てこないので、選ぶ根拠がありません。
この問題の用語
- ハッシュ関数どんな長さのものからも決まった長さの値を作り出す計算。少しでも中身が変われば、できあがる値は大きく変わります。
- ハッシュ値データから計算した固定長の値のこと。同じデータなら必ず同じ値になるので、データの比較や検索を速くするのに使われます。
出典:平成25年度 春期 基本情報技術者試験 午前 問7
同じ用語が出る問題
- 令和7年度 科目A 問9:暗号の危殆化に該当するもの(ハッシュ関数)
- 令和6年度 科目A 問9:ペネトレーションテストの問題(ハッシュ値)
- 令和6年度 科目A 問2:衝突が起こるキーの組合せ(ハッシュ関数)
- 令和元年度 秋期 午前 問36:動的解析に該当するもの(ハッシュ値)
- 平成27年度 秋期 午前 問36:デジタル署名に関する問題(ハッシュ関数)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)