« Project Euler - Problem 33 | トップページ | Project Euler - Problem 35 : 1.0s (Ruby 1.9) »

2009年7月15日 (水)

Project Euler - Problem 34

問題はこちらをご覧ください。


この問題は Problem 30 と同じ考え方ができます。

まず調べる上限ですが、8 桁以上になると「各桁の数の階乗の和」の桁が元の数の桁に追いつかなくなります。

したがって、9! x 7 までを調べればいいことが分かります。

また、Problem 30 と同じくメモ化をして時間短縮を図りました。

require 'math_tool' fact_sum = (0 .. 9).map{|i| i.factorial} ans = Array.new (10 .. fact_sum[9] * 7).each do |n| q, r = n.divmod(10) sum = fact_sum[q] + fact_sum[r] ans.push(n) if n == sum fact_sum[n] = sum end puts ans.inject(:+)

« Project Euler - Problem 33 | トップページ | Project Euler - Problem 35 : 1.0s (Ruby 1.9) »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112020/45640533

この記事へのトラックバック一覧です: Project Euler - Problem 34:

« Project Euler - Problem 33 | トップページ | Project Euler - Problem 35 : 1.0s (Ruby 1.9) »

2016年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
フォト

最近のトラックバック

無料ブログはココログ