修了試験 2017-01-22実施分 基本情報技術者試験 問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で割った余りとする。

正答2
解説
正解は2です。 ハッシュ法は、キーからハッシュ関数で格納位置を計算して配列に入れる方法です。 この問題では各桁の和を13で割った余りが格納位置になります。 【計算】 54321の各桁の和は、5+4+3+2+1=15です。 15を13で割ると、商が1で余りが2です。 したがってmod(15,13)=2となり、位置2に格納されます。 【選択肢別解説】 1:× 位置1になるのは各桁の和を13で割った余りが1のときです。 和15の余りは2です。 2:○ 各桁の和15を13で割った余りが2なので、位置2に格納されます。 3:× 位置7になるのは余りが7のときで、和15からは得られません。 4:× 位置11になるのは余りが11のときです。 和15の余りは2です。 【ポイント】 mod(x,n)の値は0からn-1までなので、配列は位置0から12までの13要素になっています。 異なるキーが同じ位置になることをシノニム(衝突)と呼び、その対処法も頻出です。まとめて解く
修了試験 2017-01-22実施分を通しで解く(80問)→