🎉 Добавлен материал по 9 заданию
ЕГЭ
Задания
Задание 5
20486

Задание 20486

(М. Попков) На вход алгоритма подаётся натуральное число N>3. Алгоритм строит по нему новое число R следующим образом.

  1. Строится двоичная запись числа N.
  2. К этой записи дописываются ещё три разряда по следующему правилу:
    • если N чётное, то к нему справа приписываются три его первые цифры двоичной записи
    • если N нечётное, то к нему слева приписывается 1, а справа приписывается 01
    Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

Укажите минимальное число R, которое превышает число 600 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления

Решение

a = []
for N in range(3, 1000):
    n = bin(N)[2:] # не забываем про срез
 
    if N % 2 == 0:
        n = n + n[0:3]
    else:
        n = '1' + n + '01'
 
    R = int(n, 2)
    if R > 600:
        a.append(R)
 
print(min(a))

Разбор работы кода

  1. Создаём пустой список a для хранения значений R, превышающих 600
  2. Цикл for N in range(3, 1000): перебирает натуральные числа N > 3
  3. bin(N)[2:] переводит N в двоичную систему и убирает приставку '0b'
  4. Определяем четность N:
    • Если чётное (N % 2 == 0), добавляем первые три цифры двоичной записи в конец
    • Если нечётное, добавляем 1 в начало и 01 в конец
  5. int(n, 2) преобразует двоичную строку обратно в десятичное число R
  6. Если R > 600, добавляем его в a
  7. Выводим min(a) — минимальное R, которое больше 600