Good Bye 2015 B. New Year and Old Property
B. New Year and Old Property
問題
整数$a,b$が与えられる。($1 \le a,b \le 10^{18}$)
整数$c$で、$a \le c \le b$であり、2進表記したとき丁度ひとつだけ0
を含むものの数を答えよ。
解法
2進数111...1110111...111
の形の整数を全部試せばよい。
多倍長整数で殴る。
実装
#!/usr/bin/env python3
a, b = map(int,input().split())
cnt = 0
for i in range(2,64*8):
for j in range(1,i):
c = ['1'] * i
c[j] = '0'
c = int(''.join(c), 2)
if a <= c <= b:
cnt += 1
print(cnt)