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^)