Перебор без ошибок · тема 7 из 8

Биты, байты и округление

Кодирование информации · ЕГЭ 7, 11

01 · Пойми идею

Одна идея — один пример

Алфавит мощности m требует минимального целого b, для которого 2**b >= m. Для m > 0 это (m-1).bit_length(). Округляй именно там, где требует условие.

print((33 - 1).bit_length())

02 · Добавь следующий шаг

Теперь решаем самостоятельно

Если каждый идентификатор хранится в целом числе байт, сначала округли его размер вверх, а затем умножай на количество идентификаторов.

Твоя задача

Вводятся m ≥ 2, длина L > 0 и число идентификаторов N > 0, каждое на новой строке. Символы кодируются одинаковым минимальным числом бит. Каждый идентификатор хранится в целом числе байт. Выведи общий объём в байтах.

Пример входных данных и результата

Ввод:

33
3
2

Вывод:

6
Черновик и файл программы

Черновик сохраняется в этом браузере. Ctrl/⌘ + S — сохранить.

Результаты проверки

Напиши решение и нажми «Проверить код». Данные каждого теста подаются автоматически.

    Нужна подсказка?

    Байт содержит 8 бит. Выражение (x+7)//8 округляет число байт вверх.

    На чём легко ошибиться

    Не округляй сумму бит всех записей один раз, если каждая запись выделяется отдельно.

    Разобрать один из способов решения

    Сначала попробуй написать код сам. Сравни алгоритм, затем закрой разбор и воспроизведи решение без подсказки.

    m = int(input())
    length = int(input())
    n = int(input())
    bits = (m - 1).bit_length()
    print(((bits * length + 7) // 8) * n)

    Тесты проверяют результат на учебных примерах, но не доказывают правильность для любого входа. Объясни каждую строку и предложи собственный тест.

    03 · Закрепи

    Перед следующей темой

    Назови входные данные, результат, основной шаг алгоритма и граничный случай. Если использовал разбор, напиши решение заново. Для свободных экспериментов открой Python онлайн.

    Все темы этого курса
    1. Таблица истинности без угадывания
    2. Двоичный алгоритм шаг за шагом
    3. Слова с повторениями
    4. Номер слова или само слово?
    5. Системы счисления и цикл while
    6. Делители до квадратного корня
    7. Биты, байты и округление
    8. Сети с ipaddress

    Программа подготовлена по темам банка «Академии С». Официальные документы: ФИПИ. Справочник языка: Python. Не все экзаменационные задачи нужно решать программой: например, работа в таблицах требует освоения табличного редактора.