№ 6018 ФИПИ 03.02.23 (Уровень: Базовый)
При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 35 символов и содержащий только десятичные цифры и символы из 2050-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.
Определите объём памяти (в Кбайт), необходимый для хранения 32 768 идентификаторов. В ответе запишите только целое число – количество Кбайт.
from math import ceil
- Активируем метод ceil
из библиотеки math
, который округляет число в большую сторонуsymbols = 35
- Присваиваем переменной symbols
значение 35 (по условию - это количество символов, которое содержится в идентификаторе)alphabet = 2060
- Присваиваем переменной alphabet
значение 2060 (по условию - это алфавит из которого строится идентификатор)i = 12
- Присваиваем переменной i
значение 12 (т.к. i
- это вес символа, который должен соответствовать ИЛИ превышать алфавит)bit = symbols * i
- Вычисляем произведение значений переменных symbols
и i
и присваиваем результат переменной bit
(таким образом мы находим количество бит необходимое для одного идентификатора)byte = ceil(bit / 8)
- Вычисляем результат деления значения переменной bit
на 8, округляет число в большую сторону (лучше добавить несколько пустых битов, чем потерять биты имеющие значение).inf = byte * 32768
- Вычисляем произведение значений переменных byte
и 32768 и присваиваем результат переменной inf
(смотрим, сколько нужно байтов для всех идентификаторов)kbyte = inf / 2**10
- Вычисляем результат деления значения переменной inf
на 2 в степени 10 и присваиваем результат переменной kbyte
(находим вес всех идентификаторов в Кбайт)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)