戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 秋期 午前(科目A)07


問題文

次の規則に従って配列の要素に正の整数を格納する。として16, 43, 73, 24, 85を順に格納したとき、85が格納される場所はどこか。ここで、は、で割った剰余を返す。また、配列の要素は全て0に初期化されている。   〔規則〕  (1) ならば、に格納する。  (2) (1)で格納できないとき、ならば、に格納する。  (3) (2)で格納できないとき、ならば、に格納する。

選択肢

(正解)

配列への格納規則(衝突解消の手順)【午前2 解説】

要点まとめ

  • 結論: 85 は A[9] に格納される。衝突時は順に , , を確認し、最初に空いている位置へ格納するため。
  • 根拠: 16→、43→、73 は が埋まるので に入り、24 は が埋まるため に入るという逐次判定の流れがあるため。
  • 差がつくポイント: 各ステップで必ず提示順の3つの位置のみを確認する点と、剰余計算(\mod)の結果を正確に行うことが正解を左右する。

正解の理由

正解は です。順に格納すると
  • 16 は で A[6] に格納、
  • 43 は で A[3] に格納、
  • 73 は が埋まっているため (A[4])に格納、
  • 24 は が埋まっているため (A[5])に格納、
  • 85 は が埋まっているため (A[6])も埋まっており、最後に (A[9])が空いているのでそこに格納されます。よって A[9] が格納位置です。

よくある誤解

  • 「(2) がダメなら最初に戻って再計算する」と誤解し、別の順序で探索してしまう。必ず提示された順序でのみ確認する。
  • の計算をせず、単に の周辺インデックスを順に見てしまう(例えば +1, +2 と誤認する)。
  • 配列が 0 初期化であることを忘れ、非ゼロ判定を誤ると格納位置がずれる。

解法ステップ

  1. 配列 A[0]..A[9] は全て 0 から開始。挿入を順に処理する。
  2. についてまず を計算し、A[] が 0 なら格納。違えば次へ。
  3. 次に を計算し、A[] が 0 なら格納。違えば次へ。
  4. 最後に を計算し、A[] が 0 なら格納。全て埋まっていれば規則外(本問では該当なし)。
  5. 与えられた順で 16, 43, 73, 24, 85 を上記手順で処理し、それぞれの格納先を確定する。
(具体的な途中状態)
  • 16: → A[6]=16
  • 43: → A[3]=43
  • 73: (埋) → → A[4]=73
  • 24: (埋) → → A[5]=24
  • 85: (埋) → (埋) → → A[9]=85

選択肢別の誤答解説

  • ア: A[3] — 43 が A[3] に入るため 85 が A[3] に入ることはない。85 の で最初は A[5] を確認するため不正解。
  • イ: A[5] — 24 が既に A[5] に格納されており、85 の第一候補 A[5] は埋まっているため不正解。
  • ウ: A[6] — 16 が A[6] に格納済みで、85 の第二候補 は埋まっているため不正解。
  • エ: A[9] — 正解。85 は第一候補 A[5]、第二候補 A[6] が埋まっており、第三候補 に格納される。

補足コラム

この問題はハッシュ法のオープンアドレッシング(衝突解消)の簡易版と考えられます。典型的な各種探索順(線形探索、二次探索、疑似乱数探索など)とは異なり、本問は固定された優先順位(, , )で探索する点が特徴です。試験問題では「指定された順序どおりに」厳密に評価すればよく、余計な仮定は禁物です。

FAQ

Q1: はなぜ最後に見るのですか?
A1: 問題の規則でそう定められているためです。提示順を変えると格納位置が変わる可能性があります。
Q2: 全て埋まっていた場合はどうなる?
A2: 本問では該当しませんが、実装的には格納失敗またはエラー処理になります。規則が続くなら追加の試行方法が必要です。
Q3: マイナスやゼロの は扱えるか?
A3: 本問は正の整数 が前提です。負数や 0 を扱う場合は剰余の定義に注意が必要です。

関連キーワード: 配列格納, 衝突解消, オープンアドレッシング, 剰余演算, 探索順, ハッシュ衝突, modulo, 実装演習
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について