過去問解きまくり研究所 ホーム

平成23年度 秋期 午前 問6

アルゴリズム

配列に関する問題

次の規則に従って配列の要素 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[9]

解説

先に入った値が候補をふさぎ、三つ目の規則まで進みます。

この規則は、まず値を10で割った剰余の位置に入れようとし、そこが空いていなければ次の候補、それも駄目なら三つ目の候補を試す形になっています。候補になる位置は、値そのもの、値に1を足したもの、値に4を足したもの、それぞれを10で割った剰余です。配列の要素は0で初期化されているので、0のままの位置が空きを表します。大事なのは、格納が指定された順に行われる点です。先に入った値は、後から来る値の候補をふさぎます。ですから最後の値だけを見ても答えは出ず、前の四つがどこに入ったかを順に追う必要があります。実際に追うと、一つ目は6の位置、二つ目は3の位置、三つ目は3が埋まっているので4の位置、四つ目は4が埋まっているので5の位置に入ります。判定の軸は、最後の値について三つの候補を順に当て、そこが埋まっているかどうかを一つずつ確かめることです。

ほかの選択肢はなぜ違うのか

出典:平成23年度 秋期 基本情報技術者試験 午前 問6(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)