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

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


問題文

10進法で5桁の数を、ハッシュ法を用いて配列に格納したい。ハッシュ関数をとし、求めたハッシュ値に対応する位置の配列要素に格納する場合、54321は配列のどの位置に入るか。ここで、は、を13で割った余りとする。
基本情報技術者 2013年 春期 午前(科目A) 問07の問題画像

選択肢

1
2(正解)
7
11

🔒 解説は解答すると表示されます

ハッシュ関数による格納位置【午前解説】

正解の理由

問題のハッシュ関数は明確に「 を 13 で割った余り」を用いると定義されています。
54321 の各桁を足すと です。これを 13 で割った余りは となるため、配列の位置は 2 が求まります。よって正解は です。

解法ステップ

  1. 与えられた数 54321 を各桁に分解する:
  2. 各桁を合計する:
  3. ハッシュ関数に従って剰余を求める:
  4. 求めた剰余 2 が配列の位置(インデックス)なので、答えは 2(選択肢 )。

選択肢別の誤答解説

  • ア: 1 — 桁の和を誤って と計算し とした可能性があります。桁和は必ず確認しましょう。
  • イ: — 正解。桁和 に対応します。
  • ウ: 7 — 「54321 をそのまま で計算した」場合の結果が 7 になるため、この誤りに対応する選択肢です。問題文のハッシュ定義を読み間違えるとこうなります。
  • エ: 11 — 桁和や剰余の計算を別の誤った手順(桁を重み付きで足す、あるいは別の基数で計算するなど)で行った結果として出ることがあり得ます。計算手順を再確認してください。

よくある誤解

  • 「54321 をそのまま 13 で割る」:数値全体に mod を取ると余りは 7 になり、誤答(ウ)につながります。
  • 「桁の和を誤って計算する」: を 14 や別の値に誤計算すると誤答(アなど)になります。
  • 「配列の位置が 1 始まりだと思い込む」:問題図は 0 から始まるため、インデックス基準の取り違えに注意が必要です。

補足コラム

ハッシュ法では「どの値をハッシュ値にするか(この例では桁和)」と「ハッシュ値を配列サイズに合わせる方法(ここでは mod 13)」の2点が重要です。
  • インデックスは通常 0 始まりで与えられることが多く、問題の図も0から示されています。
  • ハッシュ関数の選び方次第で衝突(複数の要素が同じ位置に割り当てられる)が発生します。桁和は簡単ですが衝突が起きやすいことを覚えておきましょう。

FAQ

Q1: mod の意味は何ですか?
A1: で割ったときの余りを指します。符号や言い回しに注意してください。
Q2: インデックスが 0 始まりか 1 始まりかはどう判断しますか?
A2: 問題文や図で位置ラベルが示されている場合はそちらに従います。本問の図は 0 から始まっています。
Q3: 桁の和が 13 以上になったらどうしますか?
A3: そのまま 桁の和 を計算します。剰余の範囲は から です。

関連キーワード: ハッシュ法、ハッシュ関数、剰余演算、配列インデックス、桁和、衝突対策
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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