Для расчета информационного веса символа алфавита, мы можем использовать формулу Шеннона:
I = -log2(P)
Где I - информационный вес символа, а P - вероятность появления этого символа.
В данном случае, у нас есть 64 символа в алфавите, значит каждый символ имеет одинаковую вероятность появления, то есть P = 1/64.
Подставляя это значение в формулу, получаем:
I = -log2(1/64)
Чтобы упростить вычисления, можно записать 1/64 как 2^(-6), так как -6 степень 2 равна 1/64.
Таким образом, мы можем переписать формулу:
I = -log2(2^(-6))
Согласно свойству логарифмов, -log2(2^(-6)) можно упростить до 6, так как логарифм и возведение в степень "отменяют" друг друга.
Окончательный ответ:
I = 6
Таким образом, информационный вес символа этого алфавита равен 6.
Чтобы найти количество байт, занимающих заданную фразу в кодировке Unicode, следует выполнить несколько шагов:
1. Преобразовать фразу в Unicode, используя таблицу соответствия символов Unicode.
2. Посчитать количество символов в полученной Unicode-строке.
3. Посчитать количество байт, занимающих каждый символ в Unicode-строке.
Теперь разберёмся с каждым шагом подробно.
1. Преобразование фразы в Unicode:
Английский алфавит и основные символы представлены однобайтовыми кодами ASCII, поэтому они занимают по одному байту в Unicode. Остальные символы могут занимать от двух до четырех байтов, в зависимости от своего кода.
В нашем случае фраза состоит только из символов, входящих в основную плоскость Unicode (BMP - Basic Multilingual Plane). В основной плоскости Unicode символы занимают два байта (от U+0000 до U+FFFF).
Таким образом, преобразуем каждый символ фразы в кодировку Unicode:
О - U+041E (6 байт)
с - U+0441 (6 байт)
к - U+043A (6 байт)
о - U+043E (6 байт)
л - U+043B (6 байт)
ь - U+044C (6 байт)
к - U+043A (6 байт)
о - U+043E (6 байт)
н - U+043D (6 байт)
- (пробел) - U+0020 (2 байта)
н - U+043D (6 байт)
а - U+0430 (6 байт)
м - U+043C (6 байт)
- (пробел) - U+0020 (2 байта)
о - U+043E (6 байт)
т - U+0442 (6 байт)
к - U+043A (6 байт)
р - U+0440 (6 байт)
ы - U+044B (6 байт)
т - U+0442 (6 байт)
i - U+0069 (2 байта)
й - U+0439 (6 байт)
- (пробел) - U+0020 (2 байта)
ч - U+0447 (6 байт)
у - U+0443 (6 байт)
д - U+0434 (6 байт)
н - U+043D (6 байт)
ы - U+044B (6 байт)
х - U+0445 (6 байт)
- (пробел) - U+0020 (2 байта)
г - U+0433 (6 байт)
о - U+043E (6 байт)
т - U+0442 (6 байт)
о - U+043E (6 байт)
в - U+0432 (6 байт)
и - U+0438 (6 байт)
т - U+0442 (6 байт)
и - U+0438 (6 байт)
- (пробел) - U+0020 (2 байта)
п - U+043F (6 байт)
р - U+0440 (6 байт)
о - U+043E (6 байт)
с - U+0441 (6 байт)
в - U+0432 (6 байт)
е - U+0435 (6 байт)
щ - U+0449 (6 байт)
е - U+0435 (6 байт)
н - U+043D (6 байт)
1 - U+0031 (2 байта)
ь - U+044C (6 байт)
я - U+044F (6 байт)
х - U+0445 (6 байт)
- (пробел) - U+0020 (2 байта)
д - U+0434 (6 байт)
у - U+0443 (6 байт)
х - U+0445 (6 байт)
! - U+0021 (2 байта)
Полученная строка в Unicode-кодировке: "Осконоскон- нам- открытий чудных готовит просве́щенья дух!1ьях-дух!".
2. Вычисление количества символов в строке.
Подсчитываем все символы в полученной строке:
Осконоскон- нам- открытий чудных готовит просве́щенья дух!1ьях-дух!
=> 54 символа
3. Подсчет количества байт для каждого символа.
В данном случае каждый символ занимает 6 байт, за исключением пробела и цифры 1, которые занимают 2 байта, и буквы i, которая занимает 2 байта.
Вычисляем количество байт:
6 байт * (54 символа - 2 пробела - 1 цифра 1 - 1 буква i) + 2 байта * 2 пробела + 2 байта * 1 цифра 1 + 2 байта * 1 буква i
= 6 * 50 + 2 * 2 + 2 * 1 + 2 * 1
= 300 + 4 + 2 + 2
= 308 байт
Итак, ответ на задачу составляет 308 байт.
===== PascalABC.NET =====
begin
ReadArrInteger(3).Select(p -> p.IsEven ? p * p : p).Println(',')
end.
Замечание: В Паскаль данные разделяются пробелами, или переводами строки (клавиша Enter), поэтому вводить черз запятую не выйдет )))