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

令和元年度 秋期 午前 問10

アルゴリズム

ハッシュ法に関する問題

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 と空の配列を並べた図が添えられている(格納先が0〜12であることを示すだけの図)。

答えと解説を見る

✓ これが正解イ2

解説

五つの数字を足して13で割り、その余りが置き場所です。

ハッシュ法は、値そのものから置き場所を計算で決めてしまうやり方です。ここでのハッシュ関数は二段構えで、まず五つの数字を足し、次にその合計を13で割った余りを取ると定められています。与えられた数を桁ごとに見ると、5と4と3と2と1です。順に足していくと合計は15になります。15を13で割ると、商が1で余りが2ですから、置き場所は2の位置です。余りは0から12までの十三通りしか出ないので、置き場所も十三個そろえれば足ります。割る数に13が選ばれているのは、桁の並びの偏りを散らしやすいからです。合計を先に出してから割る、という順序さえ守れば桁数が増えても同じ手が使えます。合計の15をそのまま答えにしない点だけが、この問いの引っかかりどころです。割る数に素数を選ぶのは、同じ場所へ集まるのを避けるためです。

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

この問題の用語

出典:令和元年度 秋期 基本情報技術者試験 午前 問10

同じ用語が出る問題

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