本年度慶応大学入試問題について

 投稿者:北摂三太郎  投稿日:2009年 8月 2日(日)01時52分57秒
  本年度大学入試プログラミングの問題
 慶応・環境情報
フィボナッチ数列の最初の20項を出力する問題で
模範解答とは異なる
150 let b=a-b
160 let a=a+b
としても、正しい出力が得られます。
問題文には、「もっとも適切なものを選び・・・」と
書かれているので、これは不正解なのでしょうか?
みなさまのご意見をお聞かせください。
数研、旺文社の正解は、次です。
100 LET a=1
110 LET b=0
120 LET n=0
130 IF n=20 THEN GOTO 190
140 LET n=n+1
150 LET b=a+b
160 LET a=b-a
170 PRINT b
180 GOTO 130
190 END
 

Re: 本年度慶応大学入試問題について

 投稿者:山中和義  投稿日:2009年 8月 2日(日)15時03分48秒
  > No.465[元記事へ]

北摂三太郎さんへのお返事です。


模範解答の変数a,bの意味を考えてみます。

第1項と第2項も漸化式に吸収して解釈すると
a[1]=a[-1]+a[0]                         =1+0          =1
a[2]=      a[0]+a[1]                    =  0+1        =1
a[3]=           a[1]+a[2]               =    1+1      =2
a[4]=                a[2]+a[3]          =      1+2    =3
a[5]=                     a[3]+a[4]     =        2+3  =5
                                │   ┌────────┘
            一般化すると、  古いb↓   ↓
                                a  + b  → b
a[6]=                          a[4]+a[5]=          3+5=8
   :
   :

これをプログラムにすると
100 LET a=1 !古いb
110 LET b=0 !A[0]
120 LET n=0 !項
130 IF n=20 THEN GOTO 190 !第20項まで
140 LET n=n+1
150 LET b=a+b !=a[n-2]+a[n-1]=A[n](=古いb+b)
160 LET a=b-a !a=b-a=A[n]-a[n-1]=a[n-2]=古いb
170 PRINT n; a; b !第n項を表示する
180 GOTO 130
190 END


a-bが、選択肢にはあるようですので、計算手順(アルゴリズム)が説明できれば
正解と言えると思います。


問題文
 

Re: 本年度慶応大学入試問題について

 投稿者:SECOND  投稿日:2009年 8月 2日(日)16時10分59秒
  > No.465[元記事へ]

!同じ出力の得られる方法は、常に、未知な方法も、含んでいるはずで、
!それを探せる事は、とても大切な事だと、思います。(個人的には それが楽しみ)
!採点側の利便を優先される弊害は、仕方がないですね・・・気になるのは、
!模範解答が、for~next を、なぜ使用しなかったのか?2行分が無駄。
!ついでに。私自身、こんな番号合せの試験されたら、0点になりそう。(笑えません)

LET a=1
LET b=0
FOR n=1 TO 20
   LET b=a+b
   LET a=b-a
   PRINT b
NEXT n
 

Re: 本年度慶応大学入試問題について

 投稿者:山中和義  投稿日:2009年 8月 5日(水)15時11分14秒
  > No.466[元記事へ]

質問への回答ではありませんが、
模範解答の手法を発展されると、項を2数の組で求めることができます。
100 LET a=1 !奇数の項: a[-1]
110 LET b=0 !偶数の項: a[0]
120 LET n=0 !組
130 IF n=10 THEN GOTO 190 !10組まで
140 LET n=n+1
150 LET a=a+b !=a[k-1]+a[k]=a[k+1]
160 LET b=b+a !=b+(a+b)=2*b+a=2*a[k]+a[k-1]=a[k]+(a[k-1]+a[k])=a[k]+a[k+1]=a[k+2]
170 PRINT a; b !2数
180 GOTO 130
190 END
 

戻る