Найти в Дзене

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

Автор: Основная волна 10.06.25
Уровень: Базовый На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1210 = 11002 результатом является число 11001002 = 10010, а для исходного числа 410 = 1002 это число 100112 = 1910.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 130. Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻 Подписывайтесь на
Оглавление

Автор: Основная волна 10.06.25
Уровень: Базовый

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

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
a) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 1210 = 11002 результатом является число 11001002 = 10010, а для исходного числа 410 = 1002 это число 100112 = 1910.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 130.

Код решения:

Ответ:  31
Ответ: 31

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

  1. for n in range(1000, -1, -1):
    Цикл перебирает числа от 1000 до 0 включительно в обратном порядке (шаг -1)
  2. b = f"{n:b}"
    Преобразует число n в его двоичное представление (строку из 0 и 1)
  3. if n % 3 == 0:
    Проверяет, делится ли число n на 3 без остатка
  4. b = b + b[-3:]
    Если n делится на 3, добавляет к двоичной строке её последние три символа
  5. else:
    Если n НЕ делится на 3
  6. x = (n % 3) * 3
    Вычисляет остаток от деления n на 3 и умножает его на 3
  7. b = b + f"{x:b}"
    Преобразует x в двоичную строку и добавляет её к исходной двоичной строке
  8. r = int(b, 2)
    Преобразует полученную двоичную строку обратно в десятичное число
  9. if r < 130:
    Проверяет, получилось ли число меньше 130
  10. print(n)
    Если условие выполнено, выводит текущее значение n
  11. break
    Прерывает цикл после нахождения первого подходящего числа
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!