共通テスト(情報) 過去問
令和6年度(2024年度)本試験
問43 (<旧課程>情報関係基礎(第3問) 問8)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

共通テスト(情報)試験 令和6年度(2024年度)本試験 問43(<旧課程>情報関係基礎(第3問) 問8) (訂正依頼・報告はこちら)

Nが奇数であれば、次の手順に従うとN次の魔方陣を作成できることが知られている。
● まず、図5(a)に示すように、一番下の行の中央に1を記入する。
● 2以降の数zについては、基本的に、その前にz−1を記入したマスの右下のマスに記入する。
○ ただし、右下のマスが表の外側になるとき、下にはみ出る場合は一番上の行に、右にはみ出る場合は一番左の列に回り込む。右にも下にもはみ出る場合は、第0列第0行に回り込む。
○ 記入しようとするマスにすでに数が記入されていた場合は、z−1を記入したマスの一つ上のマスに記入する。
この手順を用いて3次の魔方陣を作成する。2を記入するときに下にはみ出るので、一番上の行に回り込む(図5(b))。これは9を記入するときも同様である。また、3を記入するときに右にはみ出るので、一番左の列に回り込む(図5(c))。これは8を記入するときも同様である。さらに、4を記入するときに3の右下のマスが埋まっているので、3の上のマスに記入する(図5(d))。なお、7を記入するとき、6の右下のマスは、右にも下にもはみ出るので、第0列第0行に回り込むが、すでに4が記入されているので、6がある第2列第2行の上のマスに記入する。完成形が図5(e)である。

この作成方法を手続きとしたものが図6である。配列Mahouに、作成する魔方陣のマスの値を格納していく。Mahou[x,y]の値が0のときは、そのマスは未記入であることを表している。最初に記入するマスの場所をNを用いて表すと、第( カ )列、第( キ )行となり、(03)行目で格納している。なお、a%bは、aをbで割った余りを求める演算である。
この手続きを実行すると、(06)行目は( ク )回実行される。

図6 3次の魔法陣を作成する手続き

(01)配列Mahouのすべての要素に0を代入する
(02)N←3
(03)x←( カ ),y←( キ ),Mahou[x,y]←1
(04)zを2からN✕Nまで1ずつ増やしながら,
(05)│ もしMahou[(x+1)%N,(y+1)%N]=0ならば
(06)│ │  x←( ケ ),y←( コ )
(07)│ を実行し,そうでなければ
(08)│ │( サ )
(09)│ を実行する
(10)│ Mahou[x,y]←z
(11)を繰り返す

( ク )にあてはまるものを1つ選べ。
問題文の画像
  • 5
  • 6
  • 7
  • 8

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

文章と図6を照らし合わせると、

● 2以降の数zについては、基本的に、その前にz−1を記入したマスの右下のマスに記入する。
○ ただし、右下のマスが表の外側になるとき、下にはみ出る場合は一番上の行に、右にはみ出る場合は一番左の列に回り込む。右にも下にもはみ出る場合は、第0列第0行に回り込む。


(05)│ もしMahou[(x+1)%N,(y+1)%N]=0ならば
(06)│ │  x←( ケ ),y←( コ )

 

○ 記入しようとするマスにすでに数が記入されていた場合は、z−1を記入したマスの一つ上のマスに記入する。


(07)│ を実行し,そうでなければ
(08)│ │( サ )
(09)│ を実行する

となります。

 

2を記入するときに下にはみ出るので、一番上の行に回り込む(図5(b))。これは9を記入するときも同様である。また、3を記入するときに右にはみ出るので、一番左の列に回り込む(図5(c))。これは8を記入するときも同様である。さらに、4を記入するときに3の右下のマスが埋まっているので、3の上のマスに記入する(図5(d))。なお、7を記入するとき、6の右下のマスは、右にも下にもはみ出るので、第0列第0行に回り込むが、すでに4が記入されているので、6がある第2列第2行の上のマスに記入する。完成形が図5(e)である。

 

この文章と図5(e)より、(06)行目が実行されるのは、293856のときの6であることが分かります。

参考になった数0

02

この問題は、図6の手続きを実行したとき(06)行目が何回実行されるかを求めます。(06)行目は、次に記入するマスが「空(未記入)」のとき実行される分岐です。ループ(04)はz=2からz=N×N=9まで実行されるので全部で8回繰り返されます。そのうち(06)行が実行されないケース(すでに埋まっているケース=(08)が実行されるケース)は、4を記入するとき(3の右下=Mahou[0,0]が埋まっており回り込んだ後も1が書かれている)と、7を記入するとき(6の右下が右にも下にもはみ出るため回り込んだMahou[0,0]がすでに4で埋まっている)の2回です。したがって(06)行目が実行される回数は8−2=6回です。

選択肢1. 5

5回だと(08)が実行されるケースが3回になることを意味しますが、実際に埋まっているケースはzが4のときと7のときの2回のみです。正しくありません。

選択肢2. 6

ループは全部で8回実行され、そのうち(08)が実行されるケース(z=4とz=7)が2回あります。したがって(06)行目は8−2=6回実行されます。正解の選択肢です。

選択肢3. 7

7回だと(08)が実行されるケースが1回しかないことになりますが、実際はz=4とz=7の2回あります。正しくありません。

選択肢4. 8

8回はループ全体の繰り返し回数です。(05)の条件が常に真(常に空のマス)のときに限られますが、実際にはz=4とz=7のとき(06)は実行されません。正しくありません。

まとめ

ループ全体の実行回数(z=2〜9の8回)から、「すでに埋まっている」ために(08)が実行されるケース数を引くことで(06)の実行回数が求まります。3×3魔方陣では、この例外ケースはz=4とz=7の2回なので、6回が正解となります。

参考になった数0

03

答えは「6」です。

図6より、(02)からN=3なので、N×N=9となる。

(04)より、zを2からN✕Nまで1ずつ増やしながらと書いてあるので、2から9までとなりz = 2、3、4、5、6、7、8、9の最大8回となる。

 

問題文より、「ただし、右下のマスが表の外側になるとき、下にはみ出る場合は一番上の行に、右にはみ出る場合は一番左の列に回り込む。右にも下にもはみ出る場合は、第0列第0行に回り込む」と記載があるため、次に、右下が「埋まっている」回数を考える。

・4を書くときに3の右下はすでに埋まっている

・7を書くときに6の右下は(回り込み後)すでに埋まっている

上記の2つは、(06)は実行されず、(08)が実行される。

 

よって、8-2をすればよいので、6回となる。

 

したがって、6が答えです。

参考になった数0