« Project Euler - Problem 51 : 1.1s (Ruby 1.9) | トップページ | Project Euler - Problem 53 : 0.1s (Ruby 1.9) »

2009年8月13日 (木)

Project Euler - Problem 52 : 0.4s (Ruby 1.9)

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


1x, 2x, 3x, 4x, 5x, 6x が全て同じ桁になるためには、元の数の一番大きな桁の数は 1 になります。( 一番大きな桁に 2 以上の数がくると、どこかで必ず繰り上がってしまい、桁が増えてしまうので……)

元の数の一番大きな桁の数が 1 の場合、2 番目に大きな桁の数が繰り上がったとしても、2x, 3x, 4x, 5x, 6x では一番大きな桁の数は 6 種類になります。

以上のことより、元の数字は最低 6 種類の数字を含んでいなければならないので、6 桁以上の数字ということになります。

# -*- coding: utf-8 -*- require 'math_tool' 123456.upto(1/0.0) do |num| # 123456 : 6 個の数字を含む最小の数 num_arr = num.to_a next if num_arr[0] > 1 num_arr = num_arr.sort if (2 .. 6).all?{|i| (i * num).to_a.sort == num_arr} puts num exit end end

« Project Euler - Problem 51 : 1.1s (Ruby 1.9) | トップページ | Project Euler - Problem 53 : 0.1s (Ruby 1.9) »

Project Euler」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: Project Euler - Problem 52 : 0.4s (Ruby 1.9):

« Project Euler - Problem 51 : 1.1s (Ruby 1.9) | トップページ | Project Euler - Problem 53 : 0.1s (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            
フォト

最近のトラックバック

無料ブログはココログ