信息的熵

信息的熵

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

信息的熵

题目描述

给定一个字符串仅由 \(ASCII\) 可见字符组成的字符串 \(S\)

将 \(S\) 各字符转为 \(8\) 位二进制形式拼接得到一个新的字符串 \(S’\)

定义字符串 \(S\) 的信息熵为 \(H(S)\)

\[H(S)=-\sum_{\mathclap{i=1}}^{|S'|} (P_{S'_i} \space× log_2\space P_{S'_i})\]

其中 \(P_{S'_i}\) 为 \(S'_i\) 在 \(S'\) 中的占比

请你计算 \(H(S)\)

\(C++\)可使用 double log2(double) 进行计算

输入格式

输入字符串 \(S\)

输出格式

输出一个实数表示 \(H(S)\)

输出保留\(5\)位小数
为避免精度误差请使用 printf("%.5lf" , ans); 的方式进行输出

样例 #1

样例输入 #1

a

样例输出 #1

3.71089

样例 #2

样例输入 #2

abcdefghijklmnopqrstuvwxyz

样例输出 #2

103.28410

提示

对于 \(50\%\)的数据\(1≤|S|≤5000\)

对于 \(100\%\)的数据\(1≤|S|≤10^5\)

保证 \(S\) 仅由大小写字母和数字组成

ACM测试赛

未参加
状态
已结束
规则
ACM/ICPC
题目
4
开始于
2023-07-30 14:15
结束于
2023-07-30 14:45
持续时间
0.5 小时
主持人
参赛人数
1