🏠 Home / 大学入試 / センター試験 / センターIIB

センター試験 数学II・数学B 2014年度追試 第6問 解説

【選択問題】(第3問~第6問から2問選択)

問題編

問題

 $\def\myBox#1{\bbox[3px, border:2px solid]{\ \bf{ #1 }\ } }\def\mybox#1{\bbox[4px, border:1px solid gray]{\ #1\ } }$p を $2$ 以上の自然数とする。 $0$ 以上 $p-1$ 以下の整数 a に対して、数の列 $b_1,b_2,\cdots,b_{p+1}$ を次のように定める。

  • $b_1$ は a とする。
  • $b_{k+1}$ は $a\times b_k+1$ を p で割った余りとする。ただし、 $k=1, 2, \cdots , p$ である。
さらに、 $b_1,b_2,\cdots,b_{p+1}$ を用いて、 $f(a)$ を次のように定める。
  • $b_k=a$ となる k が $2\leqq k \leqq p+1$ の範囲にあるときは、そのような k の最小値を $f(a)$ とする。
  • $b_k=a$ となる k が $2\leqq k \leqq p+1$ の範囲にないときは、 $f(a)=0$ とする。

 もし $f(a)=p+1$ ならば、 $b_1,b_2,\cdots,b_p$ はすべて異なり、 $0$ 以上 $p-1$ 以下の p 個の整数が1回ずつ現れる。 p を入力して、 $a=0,1,\cdots,p-1$ に対して $f(a)$ の値を出力するプログラムを考えよう。

(1) $p=5,a=3$ としたとき、 $b_1=3$ であり、 $b_2$ は $3\times 3+1=10$ を5で割った余りであるので、 $b_2=0$ である。 $b_3$ は $3\times 0+1=1$ を5で割った余りであるので、 $b_3=1$ である。同様にして、 $b_4 = \myBox{ア}$, $b_5 = \myBox{イ}$, $b_6=0$ となる。したがって、 $f(3)$ の値は $\myBox{ウ}$ であることがわかる。

(2) 2以上のどのような自然数 p に対しても、 $f(0)$ の値は $\myBox{エ}$ であり、 $f(1)$ の値は $\myBox{オ}$ である。 $\myBox{エ}$, $\myBox{オ}$ に当てはまるものを、次の 0 ~ 5 のうちから一つずつ選べ。ただし、同じものを選んでもよい。

 0: $0$
 1: $1$
 2: $2$
 3: $p-1$
 4: $p$
 5: $p+1$

(3) 2以上の自然数 p を入力して $f(0)$, $f(1)$, $\cdots$, $f(p-1)$ の値を出力する [プログラム1] を作成した。ただし、INT(X)はXを超えない最大の整数を表す関数である。

[プログラム1]
    100 INPUT PROMPT "P=":P
    110 FOR A=0 TO P-1
    120     LET B=
    130     FOR K=2 TO P+1
    140         LET B=
    150         IF B=A THEN
    160             PRINT "f(";A;")=";
    170             GOTO 210
    180         END IF
    190     NEXT K
    200     PRINT "f(";A;")=0"
    210 NEXT A
    220 END

 [プログラム1] の $\myBox{カ}$, $\myBox{ク}$ に当てはまるものを、次の 0 ~ 5 のうちから一つずつ選べ。ただし、同じものを選んでもよい。

 0: 0, 1: 1, 2: A
 3: B, 4: K, 5: P

 $\myBox{キ}$ に当てはまるものを、次の 0 ~ 5 のうちから一つ選べ。

 0: (B+1)-INT((B+1)/P)*P
 1: (B+1)-INT((B+1)/P)*A
 2: (A*B+1)-INT((A*B+1)/P)*P
 3: (A*B+1)-INT((A*B+1)/A)*A
 4: (A+1)-INT((A+1)/P)*B
 5: (A+1)-INT((A+1)/P)*P

(4) [プログラム1] を実行し、変数Pに9を入力したとき、出力される f(0), f(1), …, f(8) のうち、 f(2), f(3), …, f(8) の値は、次のようになる。

 f(2)=3
 f(3)=0
 f(4)=$\myBox{ケ}$
 f(5)=$\myBox{コ}$
 f(6)=$\myBox{サ}$
 f(7)=10
 f(8)=3

 $\myBox{ケ}$, $\myBox{コ}$, $\myBox{サ}$ に当てはまるものを、次の 0 ~ b のうちから一つずつ選べ。ただし、同じものを繰り返し選んでもよい。

 0: 0, 1: 1, 2: 2,
 3: 3, 4: 4, 5: 5,
 6: 6, 7: 7, 8: 8,
 9: 9, a: 10, b: 11

(5) 2以上の自然数 p に対して、 a を $0$ 以上 $p-1$ 以下の整数とするとき、 $f(a)=p+1$ である a の個数を求めたい。そのために、 [プログラム1] を変更して [プログラム2] を作成した。ただし、行番号に下線がひかれた行は、追加された行である。

[プログラム2]
    100 INPUT PROMPT "P=":P
    105 LET C=0
    110 FOR A=0 TO P-1
    120     LET B=
    130     FOR K=2 TO P+1
    140         LET B=
    150         IF B=A THEN
    160             PRINT "f(";A;")=";
    165             IF  THEN LET C=C+1
    170             GOTO 210
    180         END IF
    190     NEXT K
    200     PRINT "f(";A;")=0"
    210 NEXT A
    215 PRINT "個数は";C;"個である"
    220 END

 [プログラム2]の $\myBox{シ}$ に当てはまるものを、次の 0 ~ 3 のうちから一つ選べ。

 0: A=P+1
 1: B=P+1
 2: C=P+1
 3: K=P+1

 [プログラム2]を実行し、変数Pに9を入力したとき、215行で出力される変数Cの値は $\myBox{ス}$ である。

考え方

一度説明を読んだだけではわかりにくいので、(1)で手を動かしながら説明文を理解しましょう。(2)では、 $a\times b_k+1$ がどうなるかを考えましょう。

(3)は説明文の変数とプログラム中の変数がどう対応しているかを把握してから考えましょう。また、余りは、INTを使って、「商×割る数」を元の数から引いて出します。よく使うテクニックです。

(4)は実際に書き出していきましょう。(5)は新しく追加された変数Cが何を表しているかを考えましょう。また、最後は、(2)と(4)で出した結果を使いましょう。 a の範囲に注意し、(4)だけを使っておしまい、としてはいけません。


【選択問題】(第3問~第6問から2問選択)

解答編

問題

 $\def\myBox#1{\bbox[3px, border:2px solid]{\ \bf{ #1 }\ } }\def\mybox#1{\bbox[4px, border:1px solid gray]{\ #1\ } }$p を $2$ 以上の自然数とする。 $0$ 以上 $p-1$ 以下の整数 a に対して、数の列 $b_1,b_2,\cdots,b_{p+1}$ を次のように定める。

  • $b_1$ は a とする。
  • $b_{k+1}$ は $a\times b_k+1$ を p で割った余りとする。ただし、 $k=1, 2, \cdots , p$ である。
さらに、 $b_1,b_2,\cdots,b_{p+1}$ を用いて、 $f(a)$ を次のように定める。
  • $b_k=a$ となる k が $2\leqq k \leqq p+1$ の範囲にあるときは、そのような k の最小値を $f(a)$ とする。
  • $b_k=a$ となる k が $2\leqq k \leqq p+1$ の範囲にないときは、 $f(a)=0$ とする。

 もし $f(a)=p+1$ ならば、 $b_1,b_2,\cdots,b_p$ はすべて異なり、 $0$ 以上 $p-1$ 以下の p 個の整数が1回ずつ現れる。 p を入力して、 $a=0,1,\cdots,p-1$ に対して $f(a)$ の値を出力するプログラムを考えよう。

(1) $p=5,a=3$ としたとき、 $b_1=3$ であり、 $b_2$ は $3\times 3+1=10$ を5で割った余りであるので、 $b_2=0$ である。 $b_3$ は $3\times 0+1=1$ を5で割った余りであるので、 $b_3=1$ である。同様にして、 $b_4 = \myBox{ア}$, $b_5 = \myBox{イ}$, $b_6=0$ となる。したがって、 $f(3)$ の値は $\myBox{ウ}$ であることがわかる。

解説

一度説明を読んだだけではわかりづらいので、実際の計算をしながら内容を把握していきましょう。

まず、 $b_k$ を求めます。(1)の説明にあるように、 $b_1=3$, $b_2=0$, $b_3=1$ となることはわかります。

同様にすると、 $b_4$ は $3\times 1 +1=4$ を5で割った余りなので、 $b_4=4$ となります。

また、 $b_5$ は $3\times 4 +1=13$ を5で割った余りなので、 $b_5=3$ となります。

$b_6$ は $3\times 3 +1=10$ を5で割った余りなので、説明の通り、 $b_6=0$ となります。

$f(3)$ の値は、まず $2\leqq k \leqq 5+1$ の範囲で $b_k=3$ となる k があるかどうかをチェックします。上の計算から、 $k=5$ のときが該当します。よって、 $f(3)=5$ となることがわかります。

解答

アイウ:435

解答編 つづき

問題

(2) 2以上のどのような自然数 p に対しても、 $f(0)$ の値は $\myBox{エ}$ であり、 $f(1)$ の値は $\myBox{オ}$ である。 $\myBox{エ}$, $\myBox{オ}$ に当てはまるものを、次の 0 ~ 5 のうちから一つずつ選べ。ただし、同じものを選んでもよい。

 0: $0$
 1: $1$
 2: $2$
 3: $p-1$
 4: $p$
 5: $p+1$

解説

$f(0)$ とは、 $a=0$ のとき、ということですね。このとき、 $b_{k+1}$ は $0\times b_k+1$ を p で割った余りなので、 $b_2,b_3,\cdots,b_{p+1}$ はすべて $1$ となります。よって、この中に $b_k=0$ となるものはないので、 $f(0)=0$ となります。

次に、 $f(1)$ について考えてみます。 $b_1=1$ で、 $b_2$ は $1\times 1+1=2$ を p で割った余りです。以下、同様に、 $b_{k+1}$ は $b_k+1$ を p で割った余りなので、 $k\lt p$ のときは $b_k=k$ 、 $k=p$ のときは $b_k=0$ 、 $k=p+1$ のときは $b_k=1$ となることがわかります。 $2\leqq k \leqq p$ のとき、 $b_k$ を p で割った余りは $1$ 以外であり、 $b_{p+1}=1$ なので、 $f(1)=p+1$ となります。

解答

エオ:05

解答編 つづき

問題

(3) 2以上の自然数 p を入力して $f(0)$, $f(1)$, $\cdots$, $f(p-1)$ の値を出力する [プログラム1] を作成した。ただし、INT(X)はXを超えない最大の整数を表す関数である。

[プログラム1]
    100 INPUT PROMPT "P=":P
    110 FOR A=0 TO P-1
    120     LET B=
    130     FOR K=2 TO P+1
    140         LET B=
    150         IF B=A THEN
    160             PRINT "f(";A;")=";
    170             GOTO 210
    180         END IF
    190     NEXT K
    200     PRINT "f(";A;")=0"
    210 NEXT A
    220 END

 [プログラム1] の $\myBox{カ}$, $\myBox{ク}$ に当てはまるものを、次の 0 ~ 5 のうちから一つずつ選べ。ただし、同じものを選んでもよい。

 0: 0, 1: 1, 2: A
 3: B, 4: K, 5: P

 $\myBox{キ}$ に当てはまるものを、次の 0 ~ 5 のうちから一つ選べ。

 0: (B+1)-INT((B+1)/P)*P
 1: (B+1)-INT((B+1)/P)*A
 2: (A*B+1)-INT((A*B+1)/P)*P
 3: (A*B+1)-INT((A*B+1)/A)*A
 4: (A+1)-INT((A+1)/P)*B
 5: (A+1)-INT((A+1)/P)*P

解説

プログラム中の変数が何を表しているかを考えましょう。

まず、100行目から、Pは冒頭の説明にあった p に対応していることがわかります。160行目や200行目から、Aは冒頭の説明の a に対応していることがわかります。

150行目では、BとAを比較していることから、冒頭の説明にある「 $b_k=a$ 」の判断をしていることがわかります。よって、Bには $b_k$ の値が順番に入り、FOR文に使われているKが $b_k$ の k に対応していることがわかります。

以上を踏まえ、プログラムの流れを見ていきます。120行目では、Bに何かを代入しています。130行目ではK=2となっていて、2から始まっています。よって、120行目では $b_1=a$ に対応するものが入ることになります。よって、カには「A」が入ります。

キでは、 $b_k$ への値入力を行うことがわかります。 $b_{k+1}$ は、 $a\times b_k+1$ を $p$ で割った余りです。割られる数は、プログラム中の変数を使うと「A*B+1」となります。これをPで割った余りは、「商×P」を元の数から引けばよく、商はINTを使って書けるので、キには、「(A*B+1)-INT((A*B+1)/P)*P」が入ります。

クは、「f(A)=」と同時に表示されるので、冒頭の説明文中の $f(a)$ の値に対応するものが入ります。 $f(a)$ は $b_k=a$ となる最小の k なので、クには「K」が入ります。

解答

カキク:224

解答編 つづき

問題

(4) [プログラム1] を実行し、変数Pに9を入力したとき、出力される f(0), f(1), …, f(8) のうち、 f(2), f(3), …, f(8) の値は、次のようになる。

 f(2)=3
 f(3)=0
 f(4)=$\myBox{ケ}$
 f(5)=$\myBox{コ}$
 f(6)=$\myBox{サ}$
 f(7)=10
 f(8)=3

 $\myBox{ケ}$, $\myBox{コ}$, $\myBox{サ}$ に当てはまるものを、次の 0 ~ b のうちから一つずつ選べ。ただし、同じものを繰り返し選んでもよい。

 0: 0, 1: 1, 2: 2,
 3: 3, 4: 4, 5: 5,
 6: 6, 7: 7, 8: 8,
 9: 9, a: 10, b: 11

解説

プログラムの流れを追っていってもいいですが、ここでは、冒頭の説明文の通り計算していきます。冒頭の説明とプログラムは対応しているので、どちらで考えても答えは同じです。

$p=9$ のときの $f(4)$ の値を求めます。まず、 $b_1=4$ です。 $4\times 4+1=17$ なので、 $b_2=8$ です。以下、同様に計算していくと
$4\times 8+1=33$ なので、 $b_3=6$ 。
$4\times 6+1=25$ なので、 $b_4=7$ 。
$4\times 7+1=29$ なので、 $b_5=2$ 。
$4\times 2+1=0$ なので、 $b_6=0$ 。
$4\times 0+1=1$ なので、 $b_7=1$ 。
$4\times 1+1=5$ なので、 $b_8=5$ 。
$4\times 5+1=21$ なので、 $b_9=3$ 。
$4\times 3+1=13$ なので、 $b_{10}=4$ 。
となるので、 $f(4)=10$ です。これから、プログラムを実行した結果でも、10が表示されます。

次に、 $p=9$ のときの $f(5)$ の値を求めます。まず、 $b_1=5$ です。以下、先ほどと同様に計算していくと
$5\times 5+1=26$ なので、 $b_2=8$ 。
$5\times 8+1=41$ なので、 $b_3=5$ 。
となるので、 $f(5)=3$ です。これから、プログラムを実行した結果でも、3が表示されます。

次に、 $p=9$ のときの $f(6)$ の値を求めます。まず、 $b_1=6$ です。以下、先ほどと同様に計算していくと
$6\times 6+1=37$ なので、 $b_2=1$ 。
$6\times 1+1=7$ なので、 $b_3=7$ 。
$6\times 7+1=43$ なので、 $b_4=7$ 。
$6\times 7+1=43$ なので、 $b_5=7$ 。
となり、以下ずっと $b_k=7$ となります。よって、 $b_k=6$ となることはないので、 $f(6)=0$ であり、プログラムを実行した結果でも、0が表示されます。

解答

ケコサ:a30

解答編 つづき

問題

(5) 2以上の自然数 p に対して、 a を $0$ 以上 $p-1$ 以下の整数とするとき、 $f(a)=p+1$ である a の個数を求めたい。そのために、 [プログラム1] を変更して [プログラム2] を作成した。ただし、行番号に下線がひかれた行は、追加された行である。

[プログラム2]
    100 INPUT PROMPT "P=":P
    105 LET C=0
    110 FOR A=0 TO P-1
    120     LET B=
    130     FOR K=2 TO P+1
    140         LET B=
    150         IF B=A THEN
    160             PRINT "f(";A;")=";
    165             IF  THEN LET C=C+1
    170             GOTO 210
    180         END IF
    190     NEXT K
    200     PRINT "f(";A;")=0"
    210 NEXT A
    215 PRINT "個数は";C;"個である"
    220 END

 [プログラム2]の $\myBox{シ}$ に当てはまるものを、次の 0 ~ 3 のうちから一つ選べ。

 0: A=P+1
 1: B=P+1
 2: C=P+1
 3: K=P+1

 [プログラム2]を実行し、変数Pに9を入力したとき、215行で出力される変数Cの値は $\myBox{ス}$ である。

解説

追加された215行目を見ると、プログラム中の変数Cが、 $f(a)=p+1$ となる a の個数であることがわかります。165行目を見ると、条件が真のときにCの数を1増やしているため、この条件式には、「 $f(a)=p+1$ が成り立つ」という意味の式が入ることがわかります。クで考えたように、 $f(a)$ はプログラム中のKに対応していて、100行目から、 $p$ はプログラム中のPに対応しています。よって、シには「K=P+1」が入ります。

(2)と(4)の結果を使うと、 $p=9$ のときの $f(a)$ は次のようになります。考える範囲が $0\leqq a \leqq p-1=8$ であることに注意します。
 $f(0)=0$
 $f(1)=p+1=10$
 $f(2)=3$
 $f(3)=0$
 $f(4)=10$
 $f(5)=3$
 $f(6)=0$
 $f(7)=10$
 $f(8)=3$
この中で、 $f(a)=p+1=10$ となっているものは、 $a=1,4,7$ の3つです。なので、プログラムを実行したとき、215行で出力される値は 3 となります。

解答

シス:33

関連するページ

YouTubeもやってます