Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N.
2) В этой записи последний ноль заменяется на первые две цифры полученной записи. Если нуля нет, алгоритм аварийно завершается.
3) Запись записывается справа налево (в обратную сторону).
4) Результат переводится в десятичную систему счисления.
Для скольких значений N в результате работы алгоритма получится число 127?
Задача с сайта Полякова. Мне нужен как то быстро решать эту задачу. Пробовал написать программу на питоне, но отнимает слишком много времени, в условиях экзамена я такого позволить себе не могу. По идее эту задачу можно решать без программ, но как? На ум не приходит никаких идей .Мне нужен наиболее эффективный решения задачи, буду очень благодарен!!
у меня получилось 61
Объяснение:
N = 2
counter = 1
for i in range(1, 10000000):
binary = str(bin(N)[2:])
print(binary)
first_numbers = binary[:2]
temp_list = list(binary)
if temp_list[-1] == '0':
temp_list[-1] = first_numbers
print(temp_list)
temp_list.reverse()
print(temp_list)
result_join = ''.join(temp_list)
print(result_join)
result_int = int(result_join, 2)
if result_int == 127:
print(result_int)
print('counter', counter)
break
N += 1
counter += 1
Если подумать, то можно этот код сократить. А так пишется недолго и легко (если решение правильное:) )