過去ログ

まるケン
私の環境では 984 が限界で、985 を指定すると「stack level too deep」ってなります。
でも、一回このhashを変数に代入し、小刻みに計算させれば 100000 でも数秒で結果が出ました。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# 漸化式を表したhashを作成、変数 ans1183 に代入
ans1183 = Hash.new{|h,k|h[k]=k<3?[1,2,9][k]:h[k-1]*3+h[k-2]*3-h[k-3]}

# スタックが溢れない程度(900ずつ)に刻んで、hashを計算(計算するだけで表示はしない)
0.step(100000,900).each do |n|
ans1183[n]
end

# 改めて、100000の値を計算 & 結果表示
r = ans1183[100000]
p r

# 文字列に変換して桁数表示
p r.to_s.size

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

ちなみに最後に表示される桁数は 57195桁。
これくらいになると、今度はメモリ不足でHDアクセスが増え、計算スピードがめちゃくちゃ落ちます。
ま、そりゃそうですね。
   9月13日(月) 10:33:32     50845

過去問題一覧へ戻る