#генерируем список из 2000 элементов my_list = [(lambda x:(x*296+2410)%4096)(i) for i in range(2000)]
# начальное значение для временного минимума min1_value = min2_value = 10000 min1_number = min2_number = 0
while my_list: x = my_list.pop() if x < min1_value: min2_value = min1_value min2_number = min1_number min1_value = x min1_number = 1 elif x == min1_value: min1_number += 1 elif x < min2_value: min2_value = x min2_number = 1 elif x == min2_value: min2_number += 1
Разбираемся с личным кодом:
Длина n=11 символов
23 буквы + 10 цифр = 33 символа - мощность алфавита личного кода.
33<2^i, где i - кол-во бит на символ
i = 5 бит (из неравенства выше)
V = i * n = 5 бит * 5 = 25 бит ≤ 8 байт
Разбираемся с кодом подразделения:
Длина n=299 символов
26 буквы + 10 цифр = 36 символов - мощность алфавита кода подразделения
i = 6 бит
V = 299 * 6 бит = 1794 бит ≤ 12 байт
my_list = [(lambda x:(x*296+2410)%4096)(i) for i in range(2000)]
# начальное значение для временного минимума
min1_value = min2_value = 10000
min1_number = min2_number = 0
while my_list:
x = my_list.pop()
if x < min1_value:
min2_value = min1_value
min2_number = min1_number
min1_value = x
min1_number = 1
elif x == min1_value:
min1_number += 1
elif x < min2_value:
min2_value = x
min2_number = 1
elif x == min2_value:
min2_number += 1
print(min2_number)
Длина n=11 символов
23 буквы + 10 цифр = 33 символа - мощность алфавита личного кода.
33<2^i, где i - кол-во бит на символ
i = 5 бит (из неравенства выше)
V = i * n = 5 бит * 5 = 25 бит ≤ 8 байт
Разбираемся с кодом подразделения:
Длина n=299 символов
26 буквы + 10 цифр = 36 символов - мощность алфавита кода подразделения
i = 6 бит
V = 299 * 6 бит = 1794 бит ≤ 12 байт
Итого объем кодов в сумме равен V=8 + 12 байт = 20 байт
Объем хранящийся на пропуске равен 30 байтам
Объем доп. информации 30 байт - 20 байт = 10 байт.