Спро
кузнечик стоит в точке 0 на числовой прямой и хочет попасть на отрезок [l, r] (на любую точку
с координатой от l до r включительно).
кузнечик умеет прыгать только вправо на произвольную степень двойки. то есть длина одного
прыжка кузнечика может составлять 1, 2, 4, 8, 16, 32, 64 и так далее. при этом разные прыжки могут
иметь разную длину.
найдите наименьшее чило прыжков, за которое кузнечик сможет добраться до отрезка [l, r]
#python v3.6.2
# dec - десятичное число, n - разрядность числа, по умолчанию - 32 (как у типа integer)
def dec_to_bin(dec, n=32):
if dec > 0:
b = ''
while dec > 0:
i = str(dec % 2)
b = i + b
dec = int(dec / 2)
return b
if dec < 0:
dec = -dec
b = ''
while dec > 0:
i = str(dec % 2)
b = i + b
dec = int(dec / 2)
# прямой код
b = '0'*(n-len(b))+b
# обратный код
b = b.replace('1', '2').replace('0', '1').replace('2', '0')
# дополнительный код
b = b[0:b.rfind('0')]+'1'+'0'*(len(b[b.rfind('0'):len(b)])-1)
return b
if dec == 0:
return 0