裏 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でシェアする
« 法による計算 | トップ | 実数を分数で近似 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事