|
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 |