Задача #2393
Кодирование
(О. Лысенков) Петя кодирует сообщение, при этом он использует алфавит из 33 символов, одними из которых являются «:», «)» и «😀». Он знает, что символ «😀» встретится в сообщении 15 раз, притом, что всего будет 1000 символов. Компьютер Пети для хранения сообщения отводит минимально возможное количество бит, каждый символ кодируется с помощью минимального количества бит. Но Пете этого мало и он хочет сэкономить память по максимуму, поэтому ему пришла на ум идея взамен этого алфавита использовать алфавит из 32 символов, заменив «😀» на сочетание символов «:» и «)», получив соответственно «:)». К сожалению, Петя, плохо знает информатику, поэтому просит у вас помощи. Помогите ему понять, что ему выгоднее: использовать алфавит из 33 символов или же заменить его на алфавит из 32 символов, заменив все «😀» на «:)»? Напишите букву А, если выгоднее способ с 33 символами или букву Б, если способ с 32 символами, также после укажите разницу между этими двумя способами в битах. Так, например, если первый способ выгоднее и разница была бы равна 35, то вам необходимо было бы вывести А35.
Решение
Ответ
Рассмотрим ситуацию, если у нас 33 символа:
1)
Количество символ в сообщении , значит
2) бит необходимо для кодирования первым способом.
Рассмотрим ситуацию, если у нас 32 символа:
Так как 32 символа получилось за счет того, что каждый "😀" в сообщении будет заменён на ":)", то есть на 2 символа, то найдем новое количество символов в сообщении.
Так как в сообщении было 1000 символов, из них 15 "😀", то без "😀" получаем 985 символов.
15 "😀" меняются в таком случае на символов.
Новое сообщение состоит из 985 символов + 30 символов, которые меняют 15 "😀". Итого
1)
2) бит
По итогу получили, что в первой ситуации 6000 бит, а во второй 5075, поэтому вторая ситуация выгоднее. Разница между информационным объёмом в первом и втором варианте
Ответ: Б925