センター試験: 数学IIBのプログラムについて語るスレ part2

このエントリーをはてなブックマークに追加
31デフォルトの名無しさん
自然数 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
32デフォルトの名無しさん:2013/01/22(火) 23:22:50.62
>>30
あの、センター試験って
一般の高校生が解く問題なんですが?w
33デフォルトの名無しさん:2013/01/23(水) 09:32:31.81
高校生以上なら全員知ってるようなことを
ドヤ顔で言うとはさてはおまい厨房だな
34デフォルトの名無しさん:2013/01/23(水) 09:44:24.50
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 に代入している。
35デフォルトの名無しさん:2013/01/23(水) 09:49:50.42
(プログラム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
36デフォルトの名無しさん:2013/01/23(水) 09:54:58.03
[ウ]、[エ]、[オ] に当てはまるものを、次の (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 進数表示は [カキクケ] となる。
37デフォルトの名無しさん:2013/01/23(水) 09:59:59.98
出題者のオナニーに付き合わされる受験生もたまったもんじゃないな。
38デフォルトの名無しさん:2013/01/23(水) 10:07:18.88
(問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
39デフォルトの名無しさん:2013/01/23(水) 10:11:54.13
(プログラム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
40デフォルトの名無しさん:2013/01/23(水) 10:15:58.41
(プログラム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 行はいずれも実行されない
41デフォルトの名無しさん:2013/01/23(水) 10:19:42.10
おもろいか、これ?
42デフォルトの名無しさん:2013/01/23(水) 10:26:33.18
>>28
WebGLが流行りつつあるこの御時勢なら
3次元座標で回転行列の計算させる問題とかな
43デフォルトの名無しさん:2013/01/23(水) 11:39:52.57
スーパーマリオで満足してる人にファミコン以上は必要ない
なんかそんな感じ
盛り上がってるのは一部の技術屋だけっつーか
プログラムってなんなんだろう
44デフォルトの名無しさん:2013/01/23(水) 12:59:49.20
>>42
行列が数学Cから無くなったらしいな
45デフォルトの名無しさん:2013/01/23(水) 13:14:51.83
これ実質10分ぐらいで解くの?
情報処理試験より厳しいな。
46デフォルトの名無しさん:2013/01/23(水) 13:27:44.20
傾向と対策
毎回必ず出るパターン
INT(X) は X を超えない最大の整数を表す関数である
N - N/INT(X)*X
○○行は●●回実行される
47デフォルトの名無しさん:2013/01/23(水) 13:54:16.91
これは高度過ぎて 実務に使えん

こんなプログラミングやったら 理解不能で皆パニックになるぞ
48デフォルトの名無しさん:2013/01/23(水) 14:24:23.88
>>40 乙乙
Node.js の勉強ついでに解いてみた。
var puts = console.log.bind(console);
var so = process.stdout, si = process.stdin;
so.setEncoding('utf8');
si.setEncoding('utf8');
si.pause();
so.write('number ? ');
so.on('drain', function(){ si.resume(); });
si.on('data', function(chunk){
  chunk.trim().split('\n').forEach(function(line){
    var n = parseInt(line);
    if(isNaN(n)){ puts('[' + line + '] is not a number'); return; }
    // puts('number = ' + n);
    var p = Math.floor(Math.log(n) / Math.log(3)) + 1;
    var x = Math.pow(3, p - 1);
    var m = n, sa = '', sb = '';
    for(var i = 1; i <= p; i++){
      // puts('p = ' + p + ', x = ' + x + ', n = ' + n + ', m = ' + m);
      sa += Math.floor(n / x);
      n -= Math.floor(n / x) * x;
      x /= 3;
      sb += m - Math.floor(m / 3) * 3;
      m = Math.floor(m / 3);
    }
    puts((sa == '' ? '0' : sa) + ' ' + (sb == '' ? '0' : sb) + ' 一致' + (sa == sb ? 'する' : 'しない'));
  });
  if(so.write('number ? ') == false) si.pause();
});
si.on('end', function(){ puts('bye.'); });
49デフォルトの名無しさん:2013/01/23(水) 14:28:32.85
$ node iib6_2013.js
number ? 0
0 0 一致する
number ? 1
1 1 一致する
number ? 2
2 2 一致する
number ? 3
10 01 一致しない
number ? 4
11 11 一致する
...
number ? 8
22 22 一致する
number ? 9
100 001 一致しない
number ? 10
101 101 一致する
number ? 35
1022 2201 一致しない
number ? 50
1212 2121 一致しない
number ? 77
2212 2122 一致しない
number ? 202
21111 11112 一致しない
number ? 203
21112 21112 一致する
number ? 436
121011 110121 一致しない
50デフォルトの名無しさん:2013/01/23(水) 14:29:57.29
ちょっと期待したけど、やっぱり JavaScript は好きになれない。
51デフォルトの名無しさん:2013/01/23(水) 19:52:46.22
>>48
フローが訳判らんのだが
52デフォルトの名無しさん:2013/01/23(水) 20:03:04.90
馬鹿には無理
53デフォルトの名無しさん:2013/01/24(木) 13:36:35.29
>51
風呂が沸かん
54デフォルトの名無しさん:2013/01/26(土) 16:07:11.05
JavaScriptは宣言型なのでフローは顕にはソース中に現れないと信じて書くとわけの分からないものを作ることことが可能になる
55デフォルトの名無しさん:2013/01/27(日) 09:39:28.18
いまどきgotoの時代でもあるまいに
56デフォルトの名無しさん:2013/01/27(日) 10:34:01.26
非同期プログラミングは良いんだけど
return したときどこに戻ってるのかが判り辛い
57デフォルトの名無しさん:2013/01/27(日) 11:27:22.55
どこにも戻ってないよ。
関数が終わってるだけ。
58デフォルトの名無しさん:2013/01/27(日) 14:26:46.74
いい加減、剰余演算子を実装しろ
59デフォルトの名無しさん:2013/01/28(月) 00:54:35.41
剰余は余剰です
60デフォルトの名無しさん:2013/01/30(水) 07:16:20.39
>>56
async.jsオヌヌメ。
61デフォルトの名無しさん:2013/02/11(月) 11:27:24.09
62デフォルトの名無しさん:2013/02/19(火) 17:37:57.61
慶應の入試問題に数独が出たらしいな。
胸熱。
63デフォルトの名無しさん:2013/02/19(火) 17:47:46.94
つぎの式を展開せよ
(√3 + √5 + √7)(√3 + √5 - √7)(√3 - √5 + √7)(-√3 + √5 + √7)
64デフォルトの名無しさん:2013/02/19(火) 17:58:37.30
(√3 + √5 + √7)(√3 + √5 - √7)(√3 - √5 + √7)(-√3 + √5 + √7)
= ((√3 + √5) + √7)((√3 + √5) - √7)((√3 - √5) + √7)(-(√3 - √5) + √7)
= ((√3 + √5)(√3 + √5) - 7)(7 - (√3 - √5)(√3 - √5))
= (3 + 5 + 2√15 - 7)(7 - (3 + 5 - 2√15))
= (1 + 2√15)(-1 + 2√15)
= 4 x 15 - 1
= 59
65デフォルトの名無しさん:2013/02/19(火) 18:04:00.10
どっかの高校の入試問題か?
66デフォルトの名無しさん:2013/02/19(火) 18:36:19.26
板の趣旨とまったく関連ないよねこのスレ。
67デフォルトの名無しさん:2013/02/20(水) 15:42:19.23
どこならおあつらえむきですか
68デフォルトの名無しさん:2013/02/20(水) 21:10:47.09
あえてやるのだとしたら、なんでもあり板、厨房板、ネットwatch板の
いずれかだろうな。
69デフォルトの名無しさん:2013/02/24(日) 15:10:50.16
毎年試験に出てるけど
傾向と対策シリーズとか本出てるのかな
予備校でも教えてるのかな
慣れれば点数確保出来て良いと思う
70デフォルトの名無しさん:2013/02/24(日) 15:20:30.75
時代遅れの糞BASICじゃなければな。
71デフォルトの名無しさん:2013/02/24(日) 15:28:59.18
文部省もうちょい考えれ
72デフォルトの名無しさん:2013/02/24(日) 15:41:08.18
Ruby に汁(キリッ)
73デフォルトの名無しさん:2013/02/27(水) 09:16:55.94
Rubyも2.0出たことだし国産だしRubyで出題すれば良いのにな。
74デフォルトの名無しさん:2013/02/27(水) 11:42:41.58
RubyがJISになったら出題されるかもな
75デフォルトの名無しさん:2013/02/27(水) 15:59:54.44
島根県がんがれ
原発泊まってるからがんがれないか
76デフォルトの名無しさん:2013/03/10(日) 08:35:56.46
二次試験で出す大学でないかな
77デフォルトの名無しさん
>>62
むかし、情報処理試験の何かで出題されたことあったような。