本文へ進む
メニュー
医学部数学 過去問DB問題を探す

筑波大学/2002年度

筑波大学 2002年 数学 第7問解答・解説

このページには広告が含まれます。

1問題

筑波大学2002年度第7問

0 < a < 1 なる a に対して 0 と 1 の列 c1,⋯ ,cnc_{1}, \cdots, c_{n} を右の流れ図に従って計算する。 このとき、次の問いに答えよ。

流れ図は「開始」→「aを入力」→「n←0」→判定「a=0」と進み、YESなら「終了」、NOなら「n←n+1」へ進む。続く判定「a≥0.5」はYESなら同じ枠内の「cₙ←1」「a←a−0.5」、NOなら「cₙ←0」へ進む。両枝は合流して「PRINT cₙ」→「a←a×2」と進み、左側の上向き経路を経て「a=0」の判定前へ戻る。

(1) a = 0.25 および a = 0.375 のとき、 それぞれに対応する c1,⋯ ,cnc_{1}, \cdots, c_{n} を求 めよ。

(2) a = 0.1 のとき、どのような出力が得られるか説明せよ。

(3) c1=1,c2=0,c3=1,c4=1c_{1}=1, c_{2}=0, c_{3}=1, c_{4}=1 を出力して終了する a を求めよ。

(4) 逆に c1,⋯ ,cnc_{1}, \cdots, c_{n} が与えられたとき、 c1,⋯ ,cnc_{1}, \cdots, c_{n} を出力して終了するような a を求める BASIC プログラムを書け。ただし、n および c1,⋯ ,cnc_{1}, \cdots, c_{n} は変数 N と C(1), ⋯ ,C(N)\cdots, C(N) に代入されているものとする。

まずは自分で解いてみましょう。詰まったら「考え方」、解けたら「答え」で確かめられます。

2答え

答えを見る自分の答えと照らし合わせる
  • (1) a=0.25: (c1,c2)=(0,1),a=0.375: (c1,c2,c3)=(0,1,1).(1)\space{}a=0.25:\space{}(c_1,c_2)=(0,1),\quad a=0.375:\space{}(c_1,c_2,c_3)=(0,1,1).
    (2) (ci)=(0,0,0,1,1,0,0,1,1,…),c2(2)\space{}(c_i)=(0,0,0,1,1,0,0,1,1,\ldots),\quad c_2 以降 0011 が周期的に続く。
    (3) a=1116.\displaystyle (3)\space{}a=\frac{11}{16}.
    (4) a=∑i=1Nci2i\displaystyle (4)\space{}a=\sum\limits _{i=1}^N\frac{c_i}{2^i} とし、cN=1c_N=1 のときに限り指定の N 桁で終了する。

3解答

解答を見る途中式つきの解答

流れ図で出力直前の値を ri−1r_{i-1} とすると、 ci={1(ri−1≧12),0(ri−1<12),ri=2ri−1−ci.\displaystyle c_i= \begin{cases} 1 &(r_{i-1}\ge\frac12),\\ 0 &(r_{i-1}<\frac12), \end{cases} \qquad r_i=2r_{i-1}-c_i. したがって rir_i は次の桁に進むための残りであり、ri=0r_i=0 になると次の反復の冒頭で終了する。

(1) a=14\displaystyle a=\frac14 では r0=14\displaystyle r_0=\frac14 から c1=0, r1=12\displaystyle c_1=0,\ r_1=\frac12、続いて c2=1, r2=0c_2=1,\ r_2=0 となる。よって (c1,c2)=(0,1)(c_1,c_2)=(0,1)。 a=38\displaystyle a=\frac38 では r0=38\displaystyle r_0=\frac38 から (c1,r1)=(0,34),(c2,r2)=(1,12),(c3,r3)=(1,0).\displaystyle (c_1,r_1)=\left(0,\frac34\right),\quad (c_2,r_2)=\left(1,\frac12\right),\quad (c_3,r_3)=(1,0). となる。よって (c1,c2,c3)=(0,1,1)(c_1,c_2,c_3)=(0,1,1)。

(2) a=110\displaystyle a=\frac1{10} の残りは 110→15→25→45→35→15→⋯\displaystyle \frac1{10}\to\frac15\to\frac25\to\frac45\to\frac35\to\frac15\to\cdots と進み、それぞれの状態で出る桁は 0,0,0,1,1,0,0,1,1,…0,0,0,1,1,0,0,1,1,\ldots となる。残り 15\displaystyle \frac15 に戻るため終了せず、c2c_2 以降で0011が繰り返される。

(3) 出力を 1,0,1,11,0,1,1 として残りを0にする初期値は、逆向きに ri−1=ci+ri2,r4=0\displaystyle r_{i-1}=\frac{c_i+r_i}{2},\qquad r_4=0 を使うと r3=12,r2=34,r1=38,r0=1+382=1116.\displaystyle r_3=\frac12,\quad r_2=\frac34,\quad r_1=\frac38,\quad r_0=\frac{1+\frac38}{2}=\frac{11}{16}. 実際に順に 1,0,1,11,0,1,1 が出て r4=0r_4=0 となる。

(4) rN=0r_N=0 から逆向きに ri−1=ci+ri2(i=N,N−1,…,1)\displaystyle r_{i-1}=\frac{c_i+r_i}{2}\quad(i=N,N-1,\ldots,1) とすれば r0=a=∑i=1Nci2i\displaystyle r_0=a=\sum\limits _{i=1}^{N}\frac{c_i}{2^i} を計算できる。C(N)=0C(N)=0 なら rN−1=0r_{N-1}=0 となり、N番目を出す前に終了するので解はない。C(N)=1C(N)=1 なら 0<a<10<a<1 であり、与えた全桁を出した直後に残りが0になる。次のBASICは桁が0または1であることも確認する。


10 IF N < 1 THEN GOTO 200
20 FOR I = 1 TO N
30 IF C(I) <> 0 AND C(I) <> 1 THEN GOTO 200
40 NEXT I
50 IF C(N) <> 1 THEN GOTO 200
60 A = 0
70 FOR I = N TO 1 STEP -1
80 A = (C(I) + A) / 2
90 NEXT I
100 PRINT A
110 END
200 PRINT "NO SOLUTION"
210 END

この問題で使う考え方

  • 二進法・位取り記数法

PR

数学を1対1で教わるオンライン塾「数強塾」

数強塾は、中学生・高校生のための数学専門のオンライン個別指導塾です。プロ講師がマンツーマンで教え、大学受験の数学にも対応しています。入塾の前に、今の学習状況と目標を確かめる診断授業(体験・3,000円、税込)を受けられます。

「数強塾」オンライン数学克服塾〈プロ講師〉

東大生と1対1で学べるオンライン個別指導「トウコベ」

トウコベは、東大生を中心に難関大学の学生が講師を務める、完全マンツーマンのオンライン個別指導です。はじめに、オンラインの説明会・勉強相談(無料)をWebで予約でき、その後にお試し授業を受けられます。

トウコベ公式サイト

似た問題を、ほかの大学で

答えや解説の誤りに気づいたら、お問い合わせから教えてください。