# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2033 # # 問題が分かりづらいが 2桁の数 a,b が # a / b (a < b) # で a の10の位と b の1の位が同じでかつ # aの1の位 / bの10の位 # になる分数が "自明でない"分数らしい.( この場合4個ある. ) # # 条件より a != b かつ b % 0 != 0 なので # 1 .. 9から異なる3つの数字を選んで (c, d, eとする) # a = c * 10 + e # b = e * 10 + d # とし, # a < b かつ a / b == c / d # のときが"自明でない"分数である. # require 'mathn' # 整数の割り算結果がRationalになることに注意 puts (1 .. 9).to_a.permutation(3).map {|cde| a = cde[0] * 10 + cde[2] b = cde[2] * 10 + cde[1] (a < b && a / b == cde[0] / cde[1]) ? a / b : nil }.reject{|v| v.nil?}.reduce(:*).denominator