Печать: Ctrl+P → ориентация альбомная, масштаб 100 % (не «вписать в лист»), поля нет, «печать фона» включить — иначе пропадут рамки таблиц. На листе две одинаковые карточки: разрезать по пунктиру посередине, получится две штуки формата A5. Эта серая рамка на бумагу не печатается.
11 класс

Алгоритм достраивает число

Задание 5 ЕГЭ: анализ алгоритма для исполнителя

Перевод в систему счисления

В двоичную — готовыми средствами:

s = f'{n:b}'        # или bin(n)[2:] — срез убирает приставку '0b'

В троичную готовой функции нет — пишем подпрограмму:

def to3(n):
    s = ''
    while n > 0:
        s = str(n % 3) + s
        n = n // 3
    return s

Обратно — int(s, 2) и int(s, 3).

Каркас: правило превращается в цикл

best = 10 ** 9              # ищем наименьшее: больше любого R
for n in range(1, 1001):    # на проверке — range(1, 101)
    s = f'{n:b}'
    if n % 2 == 0:          # признак из условия
        t = '11' + s + '11' # ветка а
    else:
        t = '1' + s + '00'  # ветка б
    r = int(t, 2)
    #print(n, s, t, r)      # снять решётку и сверить с примером
    if r > 95 and r < best:   # строка отбора
        best = r
print(best)

Правило демоверсии 2027, вопрос «наименьшее R больше 95»: печатает 100.

Проверка по примеру из условия

Сперва, ещё без строки отбора, — маленький диапазон и открытая печать: print(n, s, t, r) даёт число, запись, достройку и результат, а ста строк хватает, чтобы след читался глазами.

Примеров в условии всегда два — по одному на ветку (в демоверсии 6 → 123 и 13 → 116). Находим в следе обе строки: одного примера мало, ошибка в другой ветке им не ловится. Сошлись обе — правило прочитано верно, печать закомментировать (не стирать!), диапазон вернуть к 1001.

Строка отбора — по вопросу

СпрашиваютВначале — наоборотВ цикле
наименьшее R больше Tbest = 10 ** 9 if r > T and r < best: best = r
то же, но нечётное R добавить and r % 2 == 1
наибольшее R не больше Tbest = 0 if r <= T and r > best: best = r
наименьшее N с R ≥ Tbest = 10 ** 9 if r >= T and n < best: best = n
наибольшее N с R ≤ Tbest = 0 if r <= T and n > best: best = n
наибольшее N, R ближе всего к T dist = 10 ** 9 d = abs(r - T), затем if d <= dist: dist = d; best = n

Порядок работы

  1. Выписать признак и обе ветки.
  2. Собрать каркас; print на range(1, 101) — сверить с обоими примерами из условия (они на разные ветки).
  3. Печать закомментировать, диапазон вернуть к 1001.
  4. Дописать строку отбора под вопрос.
  5. Запустить и записать напечатанное.

Три ловушки

  • спросили N, а сохранили R: best = n или best = r — самая частая потеря балла;
  • «не меньше» и «превышающее» — >= и >, разные знаки;
  • в ответ идёт десятичное число, а не запись.
Тренажёр и разбор темы: https://kibersvet.ru/11/postroenie-chisla/
Материалы подготовлены с использованием технологий искусственного интеллекта.
11 класс

Алгоритм достраивает число

Задание 5 ЕГЭ: анализ алгоритма для исполнителя

Перевод в систему счисления

В двоичную — готовыми средствами:

s = f'{n:b}'        # или bin(n)[2:] — срез убирает приставку '0b'

В троичную готовой функции нет — пишем подпрограмму:

def to3(n):
    s = ''
    while n > 0:
        s = str(n % 3) + s
        n = n // 3
    return s

Обратно — int(s, 2) и int(s, 3).

Каркас: правило превращается в цикл

best = 10 ** 9              # ищем наименьшее: больше любого R
for n in range(1, 1001):    # на проверке — range(1, 101)
    s = f'{n:b}'
    if n % 2 == 0:          # признак из условия
        t = '11' + s + '11' # ветка а
    else:
        t = '1' + s + '00'  # ветка б
    r = int(t, 2)
    #print(n, s, t, r)      # снять решётку и сверить с примером
    if r > 95 and r < best:   # строка отбора
        best = r
print(best)

Правило демоверсии 2027, вопрос «наименьшее R больше 95»: печатает 100.

Проверка по примеру из условия

Сперва, ещё без строки отбора, — маленький диапазон и открытая печать: print(n, s, t, r) даёт число, запись, достройку и результат, а ста строк хватает, чтобы след читался глазами.

Примеров в условии всегда два — по одному на ветку (в демоверсии 6 → 123 и 13 → 116). Находим в следе обе строки: одного примера мало, ошибка в другой ветке им не ловится. Сошлись обе — правило прочитано верно, печать закомментировать (не стирать!), диапазон вернуть к 1001.

Строка отбора — по вопросу

СпрашиваютВначале — наоборотВ цикле
наименьшее R больше Tbest = 10 ** 9 if r > T and r < best: best = r
то же, но нечётное R добавить and r % 2 == 1
наибольшее R не больше Tbest = 0 if r <= T and r > best: best = r
наименьшее N с R ≥ Tbest = 10 ** 9 if r >= T and n < best: best = n
наибольшее N с R ≤ Tbest = 0 if r <= T and n > best: best = n
наибольшее N, R ближе всего к T dist = 10 ** 9 d = abs(r - T), затем if d <= dist: dist = d; best = n

Порядок работы

  1. Выписать признак и обе ветки.
  2. Собрать каркас; print на range(1, 101) — сверить с обоими примерами из условия (они на разные ветки).
  3. Печать закомментировать, диапазон вернуть к 1001.
  4. Дописать строку отбора под вопрос.
  5. Запустить и записать напечатанное.

Три ловушки

  • спросили N, а сохранили R: best = n или best = r — самая частая потеря балла;
  • «не меньше» и «превышающее» — >= и >, разные знаки;
  • в ответ идёт десятичное число, а не запись.