次の規則に従って配列の要素A[0],A[1],… ,A[9]に正の整数kを格納する。kとして16,43,73,24,85を順に格納したとき, 85が格納される場所はどこか。ここで,x mod yはxをyで割った剰余を返す。また,配列の要素は全て0に初期化されている
〔規則〕
(1)A[k mod 10] = 0ならば,k→A[k mod 10] とする。
(2)(1)で格納できないとき,A[(k+1) mod 10]=0ならば,k→ A[(k+1) mod 10] とする。
(3)(2)で格納できないとき,A[(k+4) mod 10]=0ならば,k→A[(k+4) mod 10] とする
ア A[3]
イ A[5]
ウ A[6]
エ A[9]
【解説】
配列の添え字は 1桁になります。
(1)の規則に従うと、 85は A[5]に格納されるとなりますが、格納されるデータの順番があります。
ダブっていた場合(今回は43と73がダブるのがわかっています)、格納位置がずれるので、順番にやっていくのが妥当です。
問題文の通りに 配列に格納していきます。
初期値
●手順1
16の格納位置を 求めると 添え字6となる。
●手順2
43の格納位置を 求めると 添え字3となる。
●手順3
73の格納位置を 求めると 添え字3となるが、すでにデータが存在しているため、(2)の規則により添え字4に格納する。
●手順4
24の格納位置を 求めると 添え字4となるが、すでにデータが存在しているため、(2)の規則により添え字5に格納する。
●手順5
85の格納位置を 求めると 添え字5となるが、すでにデータが存在しているため、(2)の規則により添え字6を求めた。
しかし、添え字6の位置にもすでにデータが存在するため、(3)の規則により、添え字9の位置に格納する

【解答】エ