Разбор 11.PNG

№ 6018 ФИПИ 03.02.23 (Уровень: Базовый)

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 35 символов и содержащий только десятичные цифры и символы из 2050-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.

Определите объём памяти (в Кбайт), необходимый для хранения 32 768 идентификаторов. В ответе запишите только целое число – количество Кбайт.

ray-so-export (4).png

Комментарии к решению:

  1. from math import ceil - Активируем метод ceil из библиотеки math, который округляет число в большую сторону
  2. symbols = 35 - Присваиваем переменной symbols значение 35 (по условию - это количество символов, которое содержится в идентификаторе)
  3. alphabet = 2060 - Присваиваем переменной alphabet значение 2060 (по условию - это алфавит из которого строится идентификатор)
  4. i = 12 - Присваиваем переменной i значение 12 (т.к. i - это вес символа, который должен соответствовать ИЛИ превышать алфавит)
  5. bit = symbols * i - Вычисляем произведение значений переменных symbols и i и присваиваем результат переменной bit (таким образом мы находим количество бит необходимое для одного идентификатора)
  6. byte = ceil(bit / 8) - Вычисляем результат деления значения переменной bit на 8, округляет число в большую сторону (лучше добавить несколько пустых битов, чем потерять биты имеющие значение).
  7. inf = byte * 32768 - Вычисляем произведение значений переменных byte и 32768 и присваиваем результат переменной inf (смотрим, сколько нужно байтов для всех идентификаторов)
  8. kbyte = inf / 2**10 - Вычисляем результат деления значения переменной inf на 2 в степени 10 и присваиваем результат переменной kbyte (находим вес всех идентификаторов в Кбайт)
  9. print(kbyte) - Выводим вес всех идентификаторов с помощью переменной kbyte
from math import ceil
symbols = 35
alphabet = 2060
i = 12
bit = symbols * i
# byte = int(bit / 8) + 1
byte = ceil(bit / 8)
inf = byte * 32768
kbyte = inf / 2**10
print(kbyte)