864197532
各桁を並び替えてできる最大の数と
各桁を並び替えてできる最小の数(ただし、最高位は0以外にする)の差が
自身と一致するとき、高橋の数と呼ぶ。
(http://masami.d2.r-cms.jp/blog_detail/blog_id=3&id=6)
例1)
6174の場合
7641 - 1467 = 6174
となるので、高橋の数。
9桁までの高橋の数を出力してみる。
例2)
864197532の場合
987654321 - 123456789 = 864197532
となるので、高橋の数。
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)}
(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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。