Найти в Дзене

Разбор номера 917 #kege по информатике #ЕГЭ5

Автор: Е. Джобс Уровень: Средний Автомат обрабатывает натуральное число N > 1 по следующему алгоритму: 1. Строится двоичная запись числа N. 2. В записи последний ноль заменяется на первые две цифры в полученной записи. 3. Запись записывается справа налево (в обратную сторону). 4. Полученное двоичное число переводится в десятичную систему счисления. Для какого максимального значения в результате работы алгоритма получится число 119? Про возможность обрабатывать исключения try я писал в этом посте. Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻 Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!
Оглавление

Автор: Е. Джобс

Уровень: Средний

Условие задачи:

Автомат обрабатывает натуральное число N > 1 по следующему алгоритму:

1. Строится двоичная запись числа N.

2. В записи последний ноль заменяется на первые две цифры в полученной записи.

3. Запись записывается справа налево (в обратную сторону).

4. Полученное двоичное число переводится в десятичную систему счисления.

Для какого максимального значения в результате работы алгоритма получится число 119?

Теоретическая справка:

Про возможность обрабатывать исключения try я писал в этом посте.

Код решения:

Ответ: 58
Ответ: 58

Комментарии к коду:

  1. R = []
    Создаем пустой список R для хранения чисел, которые будут соответствовать заданным условиям.
  2. for n in range(2, 1000):
    Запускаем цикл, перебирающий числа от 2 до 999 включительно.
  3. s = f'{n:b}'
    Преобразуем текущее число n в строку, содержащую его двоичное представление.
  4. try:
    Начинаем блок try для обработки возможных исключений в последующем коде.
  5. m = s.rindex('0')
    Находим индекс последнего вхождения символа '0' в строке s.
  6. s = s[:m] + s[:2] + s[m+1:]
    Формируем новую строку: оставляем часть до последнего '0', вставляем первые два символа исходной строки и добавляем оставшуюся часть исходной строки после последнего '0'.
  7. s = s[::-1]
    Переворачиваем строку s задом наперед.
  8. r = int(s, 2)
    Преобразуем строку s обратно в целое число из двоичной системы счисления.
  9. if r == 119:
    Проверяем, равно ли получившееся число 119.
  10. R.append(n)
    Если условие верно, добавляем исходное число n в список R.
  11. except Exception as E:
    Обрабатываем возможные исключения, которые могут возникнуть в блоке try.
  12. print(s, E)
    В случае исключения выводим текущую строку s и описание ошибки E.
  13. print(max(R))
    Выводим максимальное число из списка R.
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!