http://projecteuler.net/problem=34 9! * 8 < 10 ** 8なので 10 ** 8まで全探索したらいいかと考えた。 実際10 ** 8まで全探索したら端末が沈黙したので、範囲を狭めて10 ** 7までにしたらとおってしまった {{{#!highlight ruby #!/usr/bin/env ruby @fact = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880] def check(n) a = n.to_s.chars.to_a.map(&:to_i) f = a.inject(0){|acc, c| acc + @fact[c]} return f == n end ans = 0 10.upto(10**7) do |n| ans += n if check(n) end p ans }}}