# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2057 # # 最初の4回 # 3 / 2 # 7 / 5 # 17 / 12 # 49 / 29 # より,i 番目の分子を n(i),i 番目の分母を d(i)とすると,i > 0 について # d(i) = n(i - 1) + d(i - 1) # n(i) = d(i) + d(i - 1) # であることが分かる. n = [3] d = [2] puts (1 .. 1000).reduce(0) {|count, i| d[i] = n[i - 1] + d[i - 1] n[i] = d[i] + d[i - 1] count + ((n[i].to_s.size > d[i].to_s.size) ? 1 : 0) }