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