ハッシュ法の計算問題は,modとか難しそうに見えますが,サービス問題ですよ
基本情報技術者 過去問 2019年(令和元年) 秋期 午前 問10 を参考に考えてみます。
<問題>
10進法で5桁のa1a2a3a4a5をハッシュ法を用いて配列に格納したい。ハッシュ関数を mod(a1+a2+a3+a4+a5,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は次の配列のどの位置に入るか。ここで,mod(x,13) は,xを13で割った余りとする。
<選択肢>
(ア) 1
(イ) 2
(ウ) 7
(エ) 11
ハッシュ関数を mod(a1+a2+a3+a4+a5,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は次の配列のどの位置に入るか。
ここから私の思考です↓
ちなみに青字は文章を読んだ際の私の頭の中です。
<問題>
10進法で5桁のa1a2a3a4a5をハッシュ法を用いて配列に格納したい。
また文系が嫌がる書き方をすぐしますね。
私は問題数をこなしてきているので拒否反応がだいぶんすくなくなってきましたが。
10進数で5桁っていうんですから、具体的には15468みたいな数字のことですよね。
15468を例とするなら
a1=1
a2=5
a3=4
a4=6
a5=8
ですね。うん、当てはめたら難しいことはない。
ハッシュ関数を mod(a1+a2+a3+a4+a5,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は次の配列のどの位置に入るか。
やからさ、modとかそういういきった表現辞めていただきたいんよね。
受験するのは日本人で、日本語で問題文を書いてるんやからさ、
もっと日本語で書いていこう、いや、まじで。
ミスのもとやでほんまに。
ここで,mod(x,13) は,xを13で割った余りとする。
ならさ、modとか使わんとさ、最初っから
「xを13で割った余り」って書いてよね、マジで。
↑この絵って意味あんの?使う?単純に計算するだけちゃうの?
要素に入れますよってイメージを表現してるだけ?いらんし別に。
まぁいいや、思うがままに計算しまーす。
mod(a1+a2+a3+a4+a5,13) で 54321 だから
a1=5
a2=4
a3=3
a4=2
a5=1
ということは
(5+4+3+2+1)を13で割った余り、、、
15/13 = 1 余り 2
ってことで配列 2 のとこに格納するから 選択肢に 2 があればそれが正解ね。
<選択肢>
(ア) 1
(イ) 2
(ウ) 7
(エ) 11
はいありました!正解は(イ)!
正解は(イ)です。
よっしゃ!完璧、完璧。
今回はこんな感じですね。
最後まで読んでいただきありがとうございました。
これからも勉強頑張りましょうね。
私も頑張ります。
コメント