過去ログ

uchinyan
(ちょっと修正しました。)
あまりにもいい加減な解法を#25330で書いたので、少しマジメに (^^;

(算数っぽい解法)
残念ながら、あまりうまい解法を思いついていません。
#25330のいい加減な類推を、まじめに計算して確認するのが、一番自然な気がします。
もちろん、次の数学っぽい解法を算数っぽくやるのはありですが...
かえって難しそう...

(数学っぽい解法)
多分、どなたか書かれているとは思いますが...
題意より、n 秒後の生命体の最大の半径 f(n+1) cm は、次のフィボナッチ数列になっています。
f(n+1) = f(n) + f(n-1), n >= 1
f(0) = f(1) = 1
(済みません。次からが一部間違っていました...n が一つずれている箇所がありました。修正しました。)
そこで、n 秒後の生命体の面積の合計 S(n) cm^2 は、π = 3 として、
S(n) = 3 * ((f(0))~2 + (f(1))^2 + ��(k=1,n) {(f(k+1))^2}) = 3 * ��(k=0,n+1) {(f(k))^2} <----- ここ修正!
つまり、単純に、フィボナッチ数列の二乗和の3倍になっています。
ここで、漸化式より、
f(n+1) * f(n) = (f(n) + f(n-1)) * f(n) = (f(n))^2 + f(n) * f(n-1)
(f(n))^2 = f(n+1) * f(n) - f(n) * f(n-1)
��(k=1,n) {(f(k))^2} = f(n+1) * f(n) - f(1) * f(0) = f(n+1) * f(n) - f(0)
��(k=0,n) {(f(k))^2} = (フィボナッチ数列の第n項までの二乗和) = f(n+1) * f(n)
なので、
S(n) = 3 * ��(k=0,n+1) {(f(k))^2} = 3 * f(n+2) * f(n+1) <----- ここ修正!
そこで、S(n) > 100000 を初めて満たす n を求めればいいことになります。
f(n) は、f(0) から始めて、1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ... より、<----- ここ修正!
3 * f(12) * f(11) = 3 * 233 * 144 = 100656 > 100000 > 38448 = 3 * 144 * 89 = 3 * f(11) * f(10) <----- ここ修正!
なので、100000 を超えるのは、n + 1 = 11, n = 10、つまり、10秒後、と分かります。<----- ここ修正!
なお、今回は使いませんでしたが、やはり漸化式から、
f(n) = f(n+1) - f(n-1)
��(k=1,n) {f(k)} = f(n+1) + f(n) - f(1) - f(0)
��(k=0,n) {f(k)} = (フィボナッチ数列の第n項までの和) = f(n+2) - 1
ですね。
簡単に求まって、ちょっとびっくり。まぁ、漸化式から当たり前なのですが。
ネコの住む家   6月23日(木) 12:29:04   MAIL:uchi@sco.bekkoame.ne.jp   25334

過去問題一覧へ戻る