Задание относится к базовому уровню сложности, на его выполнение отводится 4 минуты. Суть задания заключается в формальном исполнении простого алгоритма, записанного на естественном языке.
Условие задачи
На вход алгоритма подаётся натуральное число N (N ≤ 12). Алгоритм строит по нему новое число следующим образом:
- Строится двоичная запись числа N.
- Если число N чётное, то к двоичной записи числа слева дописывается «10».
- Если число N нечётное, то к двоичной записи числа слева дописывается «1», а справа – «01».
Необходимо указать максимальное число, которое может быть результатом работы данного алгоритма, записав его в десятичной системе счисления.
Решение на языке Python
Для решения задачи удобно использовать язык программирования Python. Так как начальное число N неизвестно, кроме условия N ≤ 12, необходимо перебрать все возможные значения N от 1 до 12.
def solve():
max_result = 0
results = []
for n in range(1, 13):
binary_n = bin(n)[2:] # Преобразование в двоичную систему и удаление "0b"
if n % 2 == 0:
new_binary = "10" + binary_n
else:
new_binary = "1" + binary_n + "01"
decimal_result = int(new_binary, 2) # Преобразование в десятичную систему
results.append(decimal_result)
max_result = max(results)
return max_result
print(solve()) # Вывод результата
Код выполняет следующие действия:
- Цикл for перебирает значения n от 1 до 12.
- bin(n)[2:] преобразует число n в двоичную строку и удаляет префикс «0b».
- Условная конструкция if n % 2 == 0: проверяет чётность числа n и формирует новую двоичную строку согласно условию задачи.
- int(new_binary, 2) преобразует полученную двоичную строку в десятичное число.
- Результаты сохраняются в списке results.
- max(results) находит максимальное значение в списке.
- Функция solve() возвращает максимальное десятичное число.
Максимальное число, которое может быть результатом работы алгоритма при условии N ≤ 12, равно 109. Представленный код на Python эффективно решает задачу перебором всех возможных значений N и нахождением максимального результата.