Компания по снабжению электроэнергией взимает плату с клиентов по тарифу: 0,6 рублей за 1 квт/ч за первые 200 квт/ч. услугами компании пользуются 10 клиентов. подсчитать плату для каждого клиента.
Var C:string; i:integer; begin Read(C); if Length(C) mod 4 <> 0 then For i:= 1 to 4-Length(C) mod 4 do C:='0'+C; For i:= 1 to Length(C) div 4 do Case StrToInt(C[4*i-3]+C[4*i-2]+C[4*i-1]+C[4*i]) of 0000:Write(0); 0001:Write(1); 0010:Write(2); 0011:Write(3); 0100:Write(4); 0101:Write(5); 0110:Write(6); 0111:Write(7); 1000:Write(8); 1001:Write(9); 1010:Write('A'); 1011:Write('B'); 1100:Write('C'); 1101:Write('D'); 1110:Write('E'); 1111:Write('F'); End; ReadLn; end.
Строить коды для алфавита из двух символов немного странно - и так понятно, что получатся 0 и 1, и все эти кодирования бессмысленны.
Код Шеннона - Фано: делим знаки на две части, чтобы суммарные вероятности появления символов частей были максимально близки (тут в каждой части всего один символ - иначе никак). Одной приписываем 0, другой 1. На этом всё кончилось.
Код Хаффмана: выбираем два символа с наименьшими вероятностями, у одного постфикс 0, у другого 1. Объединяем в одну вершину, и она осталась одна. Конец.
В среднем 1 символ - 1 бит. Энтропия -∑ p ㏒₂ p = -0.33 log 0.33 - 0.67 log 0.67 = 0.915 бит на символ.
Учитывая, что энтропия всегда не превосходит среднюю длину кода, тут сошлось.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку