2015年4月18日土曜日

150418(2)

Ruby


864197532

各桁を並び替えてできる最大の数と
各桁を並び替えてできる最小の数(ただし、最高位は0以外にする)の差が
自身と一致するとき、高橋の数と呼ぶ。
(http://masami.d2.r-cms.jp/blog_detail/blog_id=3&id=6)
例1)
6174の場合
7641 - 1467 = 6174
となるので、高橋の数。
例2)
864197532の場合
987654321 - 123456789 = 864197532
となるので、高橋の数。

9桁までの高橋の数を出力してみる。

def takahashi_number(m)
  (10 ** (m - 1) + 8).step(9 * 10 ** (m - 1) - 1, 9){|n|
    ary = n.to_s.split('')
    min_ary = ary.sort
    max = min_ary.reverse.join.to_i
    # 最高位を0以外にする←カプレカ数との違い
    i = 0
    while min_ary[i] == '0'
      i += 1
    end
    min_ary[0], min_ary[i] = min_ary[i], min_ary[0]
    min = min_ary.join.to_i
    p [m, n] if n == max - min
  }
end

(2..9).each{|m| takahashi_number(m)}

出力結果
[3, 495]
[4, 6174]
[6, 549945]
[6, 631764]
[6, 660852]
[8, 63317664]
[8, 66308652]
[9, 554999445]
[9, 864197532]

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。