修了試験 2018-07-22実施分 基本情報技術者試験 問6
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~12の13要素をもつ。
正答2
解説
正解は2です。 ハッシュ法では、キーからハッシュ関数で格納位置を計算します。 ここでは各桁の数字の和を13で割った余りが格納位置です。 【計算】 54321の各桁の和は 5+4+3+2+1=15 です。 mod(15, 13) は 15÷13=1余り2 なので2です。 したがって、配列の位置2に格納されます。 【選択肢別解説】 1:× 位置1になるのは各桁の和を13で割った余りが1のときで、和15では余りが2になります。 2:○ 各桁の和15を13で割った余りが2なので、位置2に入ります。 3:× 位置7は、和15を13で割った余りではありません。 4:× 位置11は、和15を13で割った余りとは一致しません。 正しくは位置2です。 【ポイント】 modは割り算の余りを求める演算です。 異なるキーが同じ位置になる「衝突(シノニム)」の扱いも、ハッシュ法の頻出論点です。まとめて解く
修了試験 2018-07-22実施分を通しで解く(80問)→