ログイン
編集不可のページディスカッション情報添付ファイル
iz/競技プログラミング/Project Euler 034 Digit factorials

MMA

http://projecteuler.net/problem=34

9! * 8 < 10 ** 8なので 10 ** 8まで全探索したらいいかと考えた。

実際10 ** 8まで全探索したら端末が沈黙したので、範囲を狭めて10 ** 7までにしたらとおってしまった

   1 #!/usr/bin/env ruby
   2 
   3 @fact = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
   4 
   5 def check(n)
   6   a = n.to_s.chars.to_a.map(&:to_i)
   7   f = a.inject(0){|acc, c| acc + @fact[c]}
   8   return f == n
   9 end
  10 
  11 ans = 0
  12 10.upto(10**7) do |n|
  13   ans += n if check(n)
  14 end
  15 p ans

iz/競技プログラミング/Project Euler 034 Digit factorials (最終更新日時 2012-12-24 17:09:47 更新者 iz)