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

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

問題

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

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つ選べ。
問題文の画像
  • 0
  • N
  • N−1
  • N+1
  • (N−1)÷2
  • (N−1)%2

正解!素晴らしいです

残念...

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

01

● まず、図5(a)に示すように、一番下の行の中央に1を記入する。

 

最初に記入するマスの場所をNを用いて表すと、第( カ )列、第( キ )行となり、(03)行目で格納している。

 

一番下の行の中央は、Mahou[1,2]です。
このマスの場所をNを用いて表します。

選択肢1. 0


Nが用いられていませんし、y=2です。

選択肢2. N


N=3です。

選択肢3. N−1


N-1=2です。

選択肢4. N+1


N+1=4です。

選択肢5. (N−1)÷2


(N−1)÷2=1です。

選択肢6. (N−1)%2


(N−1)%2=0です。

参考になった数0

02

この問題は、魔方陣作成の最初に「1」を記入するマスの行番号(キ)を求めます。アルゴリズムの説明に「一番下の行の中央に1を記入する」とあります。0-based indexingでは行は0から始まり、N=3の場合の行番号は0・1・2です。「一番下の行」は行番号N-1であり、N=3では2になります。したがって(キ)はN-1です。

選択肢1. 0

0は一番上の行(第0行)を表します。「一番下の行」は行番号N-1なので、0を指定すると一番上の行に記入することになり、条件に合いません。正しくありません。

選択肢2. N

NはN=3の場合は3になりますが、行の添字の範囲は0〜N-1(0〜2)なので、3は範囲外です。正しくありません。

選択肢3. N−1

N-1はN=3のとき2となり、3行(第0〜2行)のうち最も下の行を正しく指します。「一番下の行の中央に1を記入する」という条件に合致します。正解の選択肢です。

選択肢4. N+1

N+1はN=3のとき4となり、行の添字の範囲(0〜2)を超えた値です。存在しない行への参照となります。正しくありません。

選択肢5. (N−1)÷2

(N-1)÷2はN=3のとき1となり、これは中央の行を指します。しかし「一番下の行」はN-1=2であり、中央行ではありません。なお(N-1)÷2は列の中央(カ)の値です。正しくありません。

選択肢6. (N−1)%2

(N-1)%2はN=3のとき(3-1)%2=0となり、一番上の行を指します。「一番下の行」のN-1=2とは異なります。正しくありません。

まとめ

最初に1を記入するのは「一番下の行の中央」です。0-based indexingでは「一番下の行」の行番号はN-1、「中央の列」の列番号は(N-1)÷2(整数除算)となります。(カ)=(N-1)÷2、(キ)=N-1のセットで覚えておきましょう。

参考になった数0

03

答えは「N-1」です。

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

 

最初に記入するマスは図5(a)のようになり、一番下の行の中央に1を記入すると記載されている。

・第( キ )行を求めようとすると、3行目にあるので N-1 となる。

 

したがって、N-1が答えです。

参考になった数0