#!

路上に就職!

10進数で回文

プログラマ脳を鍛える数学パズル」という本を読んでいるのですが
解答をこのブログに載せようと思いました!。

「10進数、2進数、8進数で表現しても回文となる数の中で10進数の10以上で最小の値を求めろ」 という問題です。
ABCのA問題位の難易度ですぐに解けました。

(10..).each do |n|
    if (n.to_s == n.to_s.reverse) && (n.to_s(2) == n.to_s(2).reverse) && (n.to_s(8) == n.to_s(8).reverse)
        puts n
        exit
    end
end

問題的にそこまで時間がかからないだろうと思い10以上の数字すべてが
回文かどうか調べる方法をとりました。
本では2進数に着目し、一番右桁の桁の数字が0になると
左桁も数字も0にならなければいけず2進数としておかしいことから
右の桁が1になる奇数だけに絞って回文となる数を見つけてました。
頭いい!(^o^)