裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

左右対称な二進数

2015年10月07日 | ブログラミング

m より大きく,n より小さい数のうち,次の条件を満たす整数はいくつあるか
条件:元の数を二進表記し,左右反転したものを十進に直したとき,元の数と同じになる

なにもねえ,左右反転して十進に直すなんてしなくてよいよ。
二進数が左右対称であるかどうかみればよいだけ。
例:(17)10 = (10001)2

func = function(m, n) {
    s = 0
    for (i in (m + 1):(n - 1)) {
        k = NULL
        repeat {
            k = c(k, i %% 2)
            if ((i = i %/% 2) == 0) break
        }
        s = s + all(k == rev(k))
    }
    s
}
func(0, 10000) # 204

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村