修了試験 2014-07-27実施分 基本情報技術者試験 問7
10進法で5桁の数a_1 a_2 a_3 a_4 a_5を,ハッシュ法を用いて配列に格納したい。 ハッシュ関数をmod(a_1+a_2+a_3+a_4+a_5,13)とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は配列のどの位置に入るか。 ここで,mod(x,13)は,xを13で割った余りとする。 (配列は位置0,1,2,…,11,12の要素をもつ。)
正答2
解説
正解は2です。 ハッシュ法は、キーからハッシュ関数で格納位置(ハッシュ値)を計算し、その位置にデータを格納する方式です。 本問のハッシュ関数は「各桁の数字の和を13で割った余り」なので、54321についてこれを計算します。 【計算】 各桁の和:5+4+3+2+1=15 13で割った余り:15÷13=1余り2 ハッシュ値:mod(15,13)=2 【選択肢別解説】 1:× 位置1になるのは、各桁の和を13で割った余りが1の場合です。 54321の各桁の和15の余りは2なので、位置1ではありません。 2:○ 各桁の和15を13で割った余りが2なので、54321は位置2の要素に格納されます。 3:× 余りが7になるのは、各桁の和が7や20などの場合です。 15とは一致しないので誤りです。 4:× 余りが11になるのは、各桁の和が11や24などの場合です。 15とは一致しないので誤りです。 【ポイント】 mod(x,n)の値は0からn-1の範囲になるので、配列の位置も0から12の13個になります。 異なるキーが同じハッシュ値になること(衝突、シノニム)も合わせて押さえましょう。まとめて解く
修了試験 2014-07-27実施分を通しで解く(80問)→