На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N чётное, то слева дописывается 10, а справа — 01;
б) если число N нечётное, то слева дописывается 11, а справа — 0.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1310 = 11012 результатом является число 11110102 = 12210, а для исходного числа 610 = 1102 это число 10110012 = 8910.
Укажите наименьшее число R, превышающее 120, которое может быть результатом работы данного алгоритма.
В ответе запишите это число в десятичной системе счисления.
Решение
🔹 Шаг 1. Перебор чисел и двоичная запись
for N in range(1, 20):
R = f'{N:b}'
print(N, '→', R)
📌 Результат: 1 → 1, 2 → 10, 3 → 11, 19 → 10011 и т.д.
🔹 Шаг 2. Проверка чётности N
for N in range(1, 20):
R = f'{N:b}'
if N % 2 == 0:
print(N, R, 'чётное')
else:
print(N, R, 'нечётное')
📌 Результат: 1 1 нечётное, 2 10 чётное, 3 11 нечётное, 19 10011 нечётное и т.д.
🔹 Шаг 3. Изменение двоичной строки
for N in range(1, 20):
R = f'{N:b}'
if N % 2 == 0:
R = '10' + R + '01'
print(N, '→', R, '(10 слева и 01 справа)')
else:
R = '11' + R + '0'
print(N, '→', R, '(11 слева и 0 справа)')
📌 Результат: 1 → 1110 (11 слева и 0 справа), 2 → 101001 (10 слева и 01 справа), 3 → 11110 (11 слева и 0 справа), 19 → 11100110 (11 слева и 0 справа) и т.д.
🔹 Шаг 4. Перевод обратно в десятичное число
for N in range(1, 20):
R = f'{N:b}'
if N % 2 == 0:
R = '10' + R + '01'
else:
R = '11' + R + '0'
print(N, '→', R, '→', int(R, 2))
📌 Результат: 1 → 1110 → 14, 2 → 101001 → 41, 3 → 11110 → 30, 19 → 11100110 → 230 и т.д.
🔹 Шаг 5. Поиск минимального R, превышающего 120
Цель: собрать всё вместе и понять задачу целиком.
best_R = None
for N in range(1, 10000):
R = f'{N:b}'
if N % 2 == 0:
R = '10' + R + '01'
else:
R = '11' + R + '0'
R = int(R, 2)
if R > 120:
if best_R is None or R < best_R:
best_R = R
print(best_R)
📌 Результат: минимальное значение R, превышающее 120. Ответ: 122.