平成30年度秋期 応用情報技術者試験 午前 問27

分野:アルゴリズムとプログラミング|実際に出題されたIPA過去問題

自然数を除数とした剰余を返すハッシュ関数がある。値がそれぞれ571,1168,1566である三つのレコードのキー値を入力値としてこのハッシュ関数を施したところ,全てのハッシュ値が衝突した。このとき使用した除数は幾つか。

  1.  193
  2.  197
  3.  199
  4.  211
解答・解説を見る

正解:ウ

AI解説

正解はウ。ハッシュ値が衝突した(mod nが等しい)なら、キー値同士の差はnで割り切れる。1168−571=597、1566−1168=398、1566−571=995であり、597=3×199、398=2×199、995=5×199。共通の約数は199だけなので除数は199である。 ア: 193では571 mod 193=571−2×193=185、1168 mod 193=10となり一致しない。差597などを割り切れない。 イ: 197では571 mod 197=177、1168 mod 197=? 197×5=985、1168−985=183で一致しない。差を割り切れない。 ウ: 正しい。571 mod 199=173、1168 mod 199=1168−995=173、1566 mod 199=1566−1393=173で全て衝突する。 エ: 211では571 mod 211=149、1168 mod 211=? 211×5=1055、余り113で一致しない。差を割り切れない。 💡 「mod nで等しい⇔差がnの倍数」が鍵。各値を割るより、値同士の差を取って共通因数を探す方が速い。剰余系の合同の性質は頻出テクニックである。

出典:平成30年度 秋期 応用情報技術者試験 午前 問27 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング)の過去問