facebook twitter hatena line google mixi email
★お気に入り追加


  • 1
  •  
  • 2014/01/19(日) 13:03:01.54
2014年度 数学IIB第6問
http://www.toshin.com/center/
http://www.toshin.com/center/sugaku-2b_mondai_6.html
解答例
http://sokuhou.toshin.com/q/sugaku-2b.pdf

(宣伝ではありません)

前スレ
センター試験: 数学IIBのプログラムについて語るスレ part2
http://toro.2ch.net/test/read.cgi/tech/1358572977/
センター試験: 数学IIBのプログラムについて語るスレ
http://toro.2ch.net/test/read.cgi/tech/1200989025/

ここまで見た
  • 2
  •  
  • 2014/01/19(日) 13:04:35.26
>>1
なんで試験前に問題出てんの?

ここまで見た
  • 3
  •  
  • 2014/01/19(日) 13:06:46.37
今日の問題予想しようぜ

ここまで見た
  • 4
  •  
  • 2014/01/19(日) 13:11:45.86
自然数 N を、 0 または 1 または 2 のいずれかの値をとる a(0), a(1), ..., a(p-1) を用いて

N = a(p-1) * 3^(p-1) + a(p-2) * 3^(p-2) + ... + a(2) * 3^2 + a(1) * 3 + a(0) ... (式1)

と表すとき、数字の列 a(p-1)a(p-2)...a(2)a(1)a(0) を N の 3 進数表示とよび、
p をこの 3 進数表示の桁数とよぶ。ただし、 a(p-1) は 0 ではないとする。たとえば

35 = 1 * 3^3 + 0 * 3^2 + 2 * 3 + 2

であるから、 35 の 3 進数表示は 1022 であり、その桁数は 4 である。
また、自然数 1 から 10 の 3 進数表示は以下のようになる。

自然数 N       1  2  3  4  5  6  7  8  9  10
N の 3 進数表示  1  2 10 11 12 20 21 22 100 101

3 進数表示が p 桁の自然数 N は 3^(p-1) ≦ N < 3^p を満たすので、
常用対数をとることにより、 p と N の関係式

p - 1 ≦ log10(N) / log10(3) < p ... (式2)

が成り立つことがわかる。

(問1) 3 進数表示が 1212 である自然数は [アイ] である。

(問2) 自然数 N を与え、その 3 進数表示を求めよう。 (式1) の N を 3^(p-1) で割った
商が a(p-1) であることに着目して、 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) を
*上の位の数から順に* 出力する (プログラム1) を作成した。また、 (式1) の N を 3 で
割った余りが a(0) であることに着目して、 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0)
を *下の位の数から順に* 出力する (プログラム2) を作成した。ただし、 INT(X) は
X を超えない最大の整数を表す関数である。また、 LOG10(X) は X の常用対数を表す関数
であり、 (式2) により、いずれのプログラムにおいても、 110 行は入力された自然数 N
または M の 3 進数表示の桁数を P に代入している。

ここまで見た
  • 5
  •  
  • 2014/01/19(日) 13:16:32.85
(プログラム1)
100 INPUT N
110 LET P=INT(LOG10(N)/LOG10(3))+1
120 LET X=3^(P-1)
130 FOR I=1 TO P
140  PRINT [ウ]
150  LET N=[エ]
160  LET X=[オ]
170 NEXT I
180 END

(プログラム2)
100 INPUT M
110 LET P=INT(LOG10(M)/LOG10(3))+1
120 FOR I=1 TO P
130  PRINT M-INT(M/3)*3
140  LET M=INT(M/3)
150 NEXT I
160 END

[ウ]、[エ]、[オ] に当てはまるものを、次の (0) 〜 (8) のうちから
一つずつ選べ。ただし、同じものを繰り返し選んでもよい。

(0) X/3        (1) N/3        (2) X/N
(3) INT(N/3)     (4) N-INT(N/3)    (5) N-INT(N/3)*3
(6) INT(N/X)     (7) N-INT(N/X)   (8) N-INT(N/X)*X

(プログラム2) を実行して変数 M に 77 を入力すると、 log10(77)/log10(3) = 3.95...
であることから、 110 行では P に 4 が代入される。 130 行で出力される値を並べる
ことにより、自然数 77 の 3 進数表示は [カキクケ] となる。

ここまで見た
  • 6
  •  
  • 2014/01/19(日) 13:18:17.22
(問3) 与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) が、これを逆に並べた
数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ、その結果を出力する
(プログラム3) を作成した。たとえば、 (プログラム3) を実行して変数 N に 202 を入力すると、
202 は 3 進数表示が 21111 であるから「一致しない」と出力される。また、変数 N に 203 を
入力すると、 203 は 3 進数表示が 21112 であるから「一致する」と出力される。

(プログラム3)
100 INPUT N
110 LET P=INT(LOG10(N)/LOG10(3))+1
120 LET X=3^(P-1)
130 [コ]
140 FOR I=1 TO INT(P/2)
150  LET A=[ウ]
160  LET N=[エ]
170  LET X=[オ]
180  LET B=M-INT(M/3)*3
190  LET M=INT(M/3)
200  [サ]
210 NEXT I
220 PRINT "一致する"
230 GOTO 250
240 PRINT "一致しない"
250 END

ここまで見た
  • 7
  •  
  • 2014/01/19(日) 13:22:56.80
(プログラム3) の [コ] に当てはまるものを、次の (0) 〜 (5) のうちから一つ選べ。

(0) LET M=N
(1) LET M=P
(2) LET M=X
(3) LET N=M
(4) LET N=P
(5) LET N=X

[サ] に当てはまるものを、次の (0) 〜 (3) のうちから一つ選べ。

(0) IF A=B THEN GOTO 220
(1) IF A<>B THEN GOTO 220
(2) IF A=B THEN GOTO 240
(3) IF A<>B THEN GOTO 240

(プログラム3) を実行して変数 N に 436 を入力すると、 log10(436)/log10(3) = 5.53...
であることから、 110 行では P に 6 が代入され、 200 行の IF 文の判定は [シ] 回実行される。
200 行の IF 文の判定が最後に行われたときの X の値は [スセ] であり、その後、 [ソ] 。
[ソ] に当てはまるものを、次の (0) 〜 (3) のうちから一つ選べ。

(0) 220 行が実行され、 240 行は実行されない
(1) 240 行が実行され、 220 行は実行されない
(2) 220 行と 240 行の両方が実行される
(3) 220 行と 240 行はいずれも実行されない

ここまで見た
  • 8
  •  
  • 2014/01/19(日) 13:25:25.01
去年の問題貼乙

ここまで見た
  • 9
  •  
  • 2014/01/19(日) 13:28:35.62
傾向と対策
毎回必ず出るパターン
INT(X) は X を超えない最大の整数を表す関数である
N - N/INT(X)*X
○○行は●●回実行される

ここまで見た
  • 10
  •  
  • 2014/01/19(日) 14:41:00.78
数学板のように厨房だらけになるからこういうスレは嫌だな。

ここまで見た
  • 11
  •  
  • 2014/01/19(日) 21:04:04.71
いまだにBASICなんだな。この国は教育は心底バカだな。

ここまで見た
  • 12
  •  
  • 2014/01/19(日) 21:50:11.93
今年の問題マダー?!
ちんちん

ここまで見た
  • 13
  •  
  • 2014/01/20(月) 01:18:08.07
素因数分解の問題?

ここまで見た
  • 14
  •  
  • 2014/01/20(月) 19:56:04.95
>>10
この板が漏れとおまいのふたりっきりだったら謝るよ
来年は気を付けます

ここまで見た
  • 15
  •  
  • 2014/01/20(月) 20:24:11.73
BASIC?ふざけてるのかよ

ここまで見た
  • 16
  •  
  • 2014/01/20(月) 20:40:09.38
確実に点が取れるから問5よりは問6選択した方が良いね。

ここまで見た
  • 17
  •  
  • 2014/01/20(月) 20:52:46.37
>>11
同意します

ここまで見た
  • 18
  •  
  • 2014/01/20(月) 20:55:44.35
本質的に問われているのは数学的アルゴリズムだからな。
どうせ穴埋めなんだしフローチャートで出題すればいいのに。

ここまで見た
  • 19
  •  
  • 2014/01/20(月) 23:50:30.69
http://keisan.casio.jp/exec/user/1390128601

ここまで見た
  • 20
  •  
  • 2014/01/21(火) 08:15:50.26
>>12
問題文テキスト打ち込みしてるひといる?

ここまで見た
  • 21
  •  
  • 2014/01/21(火) 10:33:38.82
いまどきBASICなんて何の冗談だよ。

ここまで見た
  • 22
  •  
  • 2014/01/21(火) 12:48:33.09
階乗進数の問題出た年あった?

ここまで見た
  • 23
  •  
  • 2014/01/21(火) 22:05:59.60
正直言うとトナカイさんしか頭に残ってない

ここまで見た
  • 24
  •  
  • 2014/01/21(火) 22:11:56.97
>>21
誰も使ってないからこそ、じゃね?
実用の言語だとそれ使ってる人が強いし。

ここまで見た
  • 25
  •  
  • 2014/01/21(火) 22:42:13.99
確かに BASIC の文法を問うだけの問題が混じってるのはいただけない。
だれもが教育用言語と認める PASCAL や Python で出題すべき。

ここまで見た
  • 26
  •  
  • 2014/01/21(火) 23:00:23.05
Cで出せよ
情報受けようとするやつで使ったことない人間なんていないだろ

ここまで見た
  • 27
  •  
  • 2014/01/21(火) 23:46:20.77
正直、行番号とかGOTOとか勘弁

ここまで見た
  • 28
  •  
  • 2014/01/21(火) 23:56:19.16
とりあえず問題と解答
http://www.dennougumi.co.jp/support/exam/h26/26_1.html

なんだかCで書き直したくなるな

ここまで見た
  • 29
  •  
  • 2014/01/22(水) 00:48:06.69
トナカイさんの意味やっと判ったわω

ここまで見た
  • 30
  •  
  • 2014/01/22(水) 06:06:32.09
ゴミ

ここまで見た
  • 31
  •  
  • 2014/01/22(水) 18:12:12.65
100歩ゆずってBASICで良いとしても
アルゴリズムに関数の再帰呼び出しを提案しながら
GOSUBも使わず二重ループ推奨とか
受験生に嫌がらせして楽しんでるだろ

ここまで見た
  • 32
  •  
  • 2014/01/22(水) 18:21:17.47
あほか。
末尾再帰からループで最適化させるって言う高尚な誘導問題なんだぞ。

ここまで見た
  • 33
  •  
  • 2014/01/22(水) 18:40:25.19
国産ωのRubyで出題汁

ここまで見た
  • 34
  •  
  • 2014/01/24(金) 04:01:26.78
いくらなんでも Ruby は無いわ

ここまで見た
  • 35
  •  
  • 2014/01/24(金) 08:25:43.68
まずCASLだよね?w

ここまで見た
  • 36
  •  
  • 2014/01/24(金) 10:05:00.29
LISPだろ常考。

ここまで見た
  • 37
  •  
  • 2014/01/24(金) 11:54:21.15
2014年度 数学IIB 第6問

2 以上の自然数 N に対して、 1 から N までの自然数の積

N! = 1 x 2 x ... x N

の素因数分解を考える。

(1)
N = 6 のとき、 N! の素因数分解は 6! = 2^[ア] x 3^[イ] x 5 である。
6! は、素因数 2 を [ア] 個、素因数 3 を [イ] 個、素因数 5 を 1 個もつ。

ここまで見た
  • 38
  •  
  • 2014/01/24(金) 12:13:02.79
(2)
N! がもつ素因数 2 の個数を求める方法について考えよう。
まず、 N/2 の整数部分を M とおく。 N 以下の自然数の中には、
M 個の偶数 2, 4, ..., 2M がある。その他の奇数の積を Q とおくと、
N! は次のように表すことができる。

N! = Q x 2 x 4 x ... x 2M = Q x 2^M x M!

したがって、 N! は少なくとも M 個の素因数 2 をもつことがわかる。
さらに、 M! がもつ素因数 2 の個数を求めるために、 N! に対する手順を
M! に対して再び用いることができる。

つまり、 N! がもつ素因数 2 の個数を求めるためには、 N から N/2 の整数部分
である M を求め、 M を改めて N と考えて、同じ手順を用いて新しく M を求める、
という手順の繰り返しを M < 2 となるまで行えばよい。この手順の繰り返しで
求められたすべての M の和が、 N! がもつ素因数 2 の個数である。

たとえば、 N = 13 の場合には、 13/2 = 6.5 であるから、 M = 6 となる。
この手順を繰り返して M を求めた結果は、 N から M を求める手順を
矢印 ( -> ) で表すと、次のようにまとめられる。

13 -> 6 -> 3 -> 1

太字で表された 6, 3, 1 が、この手順を繰り返して求められた M の値である。
それらの和 6 + 3 + 1 = 10 が、 13! のもつ素因数 2 の個数である。

この手順にしたがって、 2 以上の自然数 N を入力して、 N! がもつ素因数 2 の
個数を出力する ( プログラム1 ) を作成した。
ただし、 INT(X) は X を超えない最大の整数を表す関数である。

ここまで見た
  • 39
  •  
  • 2014/01/24(金) 12:33:22.24
( プログラム1 )

100 INPUT PROMPT "N=" : N
110 LET D = 2
120 LET C = 0
130 LET M = N
140 FOR J = 1 TO N
150 LET M = INT(M/D)
160 LET [ウ]
170 IF [エ] THEN GOTO 190
180 NEXT J
190 PRINT "素因数"; D ; "は"; C ; "個"
200 END

( プログラム1 ) の [ウ] に当てはまるものを、次の (0) 〜 (3) のうちから
一つ選べ。

(0) C = C + 1 (1) C = M (2) C = C + M (3) C = C + M + 1

[エ] に当てはまるものを、次の (0) 〜 (4) のうちから一つ選べ。

(0) M >= D (1) M = D (2) M <= D (3) M < D (4) M > D

( プログラム1 ) を実行し、変数 N に 101 を入力する。
170 行の 「 GOTO 190 」 が実行されるときの変数 J の値は [オ] である。
また、 190 行で出力される変数 C の値は [カキ] である。

ここまで見た
  • 40
  •  
  • 2014/01/24(金) 12:49:39.44
(3)
N! がもつ素因数 2 の個数を求める方法は、他の素因数の個数についても
同様に適用できる。たとえば、 N! がもつ素因数 5 の個数を求める場合は、
まず、 N/5 の整数部分を M とおく。 N 以下の自然数の中には M 個の
5 の倍数があるので、 N! は少なくとも M 個の素因数 5 をもつ。
また、これらの M 個の 5 の倍数を 5 で割った商は 1, 2, ..., M である。
M! の中の素因数 5 の個数を求めるためには、 M を N と考えて、
同じ手順を繰り返せばよい。

したがって、 N! がもつ素因数 5 の個数を求めるためには、 ( プログラム1 ) の
[クケコ] 行を [サ] に変更すればよい。 [サ] に当てはまるものを、
次の (0) 〜 (5) のうちから一つ選べ。

(0) INPUT PROMPT "N=" : N
(1) INPUT PROMPT "C=" : C
(2) INPUT PROMPT "M=" : M
(3) LET C = 5
(4) LET D = 5
(5) LET M = D

変更した ( プログラム1 ) を実行することにより、 2014! は素因数 5 を
[シスセ] 個もつことがわかる。したがって、 2014! がもつ素因数 2 の個数と
素因数 5 の個数について考えることにより、 2014! を 10 で割り切れる限り
割り続けると、 [ソタチ] 回割れることがわかる。

ここまで見た
  • 41
  •  
  • 2014/01/24(金) 13:01:21.79
(4)
N 以下のすべての素数が、 N! の素因数として含まれる。その個数は、
素数 2 や素数 5 の場合と同様に求められる。 N 以下のすべての素因数について、
N! がもつ素因数とその個数を順に出力するように、 ( プログラム1 ) を変更して
( プログラム2 ) を作成した。行番号に下線が引かれた行は、変更または追加された
行である。

ただし、繰り返し処理 「 FOR K = A TO B 〜 NEXT K 」 において、
A が B より大きい場合、この繰り返し処理は実行されず次の処理に進む。

( プログラム2 )

100 INPUT PROMPT "N=" : N
110 FOR D = 2 TO N
111 FOR K = 2 TO D - 1
112 IF [ツ] THEN [テ]
113 NEXT K
120 LET C = 0
130 LET M = N
140 FOR J = 1 TO N
150 LET M = INT(M/D)
160 LET [ウ]
170 IF [エ] THEN GOTO 190
180 NEXT J
190 PRINT "素因数"; D ; "は"; C ; "個"
191 NEXT D
200 END

ここまで見た
  • 42
  •  
  • 2014/01/24(金) 13:09:21.02
( プログラム2 ) の 111 行から 113 行までの処理は、 D が素数であるかどうかを
判定するためのものである。 [ツ] 、 [テ] に当てはまるものを、
次の (0) 〜 (8) のうちから一つずつ選べ。ただし、同じものを選んでもよい。

(0) INT(D/K) = 1
(1) INT(D/K) > 1
(2) D = INT(D/K) * K
(3) D <> INT(D/K) * K
(4) GOTO 120
(5) GOTO 130
(6) GOTO 180
(7) GOTO 190
(8) GOTO 191

( プログラム2 ) を実行し、変数 N に 26 を入力したとき、 190 行は [ト] 回
実行される。 [ト] 回のうち、変数 C の値が 2 となるのは [ナ] 回である。

ここまで見た
  • 43
  •  
  • 2014/01/24(金) 16:20:41.21
ループを何回実行するかは意識するけど、
C == 2 になるのが何回か?
とかまであんまり意識しないから、違和感あるな。
如何にも無理やりな試験問題な感じ。

ここまで見た
  • 44
  •  
  • 2014/01/24(金) 16:42:56.25
いや
そこは大事だろ

ここまで見た
  • 45
  •  
  • 2014/01/24(金) 17:57:53.91
むしろ大学の研究室で求められてる人材は
いまだにFORTRANだよ
だからとりあえずBASICでよろしい
ということになる

ここまで見た
  • 46
  •  
  • 2014/01/24(金) 21:39:31.77
じゃあFORTRANやらせろよ

ここまで見た
  • 47
  •  
  • 2014/01/25(土) 04:03:37.59
高校でプログラムの授業するとき
BASICの実行環境は何を用意してるんだろ
紙の上だけでやってるの?

ここまで見た
  • 48
  •  
  • 2014/01/25(土) 13:20:48.88
教育機関にはMSがVS配ってなかったか

ここまで見た
  • 49
  •  
  • 2014/01/25(土) 16:30:33.10
試験中は手元に実行環境無いんだから、紙の上で考えることに慣れておくべきだよ。

ここまで見た
  • 50
  •  
  • 2014/01/27(月) 11:30:36.08
整数のオーバーフローとか考慮しなくて良いのかな?
特に2014!とか求めさせてるところが気になる

お絵かきランド
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード