# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2030 # #  9 ** 5 * 6 < 10 ** 5 # より,条件に一致する数の条件は 9 ** 5 * 6 未満である. # # あとは条件に一致するか力で.. # POW5 = (0 .. 9).map{|i| i ** 5 } puts (9 ** 5 * 6).downto(2).reduce(0) {|sum, i| a = i b = 0 while (a > 0 && i >= b) b += POW5[a % 10] a = a / 10 end sum + ((b == i) ? i : 0) }