Відповідь:
Нужно закодировать ещё четыре буквы (В, Д, Е, Н), а в дереве есть три свободных узла. Каждое продолжение дерева из свободного узла создаёт два узла вместо одного, то есть количество узлов увеличивается на 1 . Значит, нужно продолжить дерево в одном месте. С точки зрения длины кодов это можно сделать двумя
из узла 10 (длина кода 2 ) получить два узла с длиной кода 3 ;
из узла 001 или 111 (длина кода 3 ) получить два узла с длиной кода 4 .
В первом случае мы получим новые коды длиной 3,3,3,3, во втором – 2,3,4,4.
Подсчитаем количество знаков для кодирования слова ВВЕДЕНИЕ в каждом их этих случаев. В первом случае длина всех добавленных кодов (буквы В, Д, Е, Н) одинакова –3 бита. Длина кода буквы И задана – тоже 3 бита. Всего получается 8х3=24 бита.
Во втором случае длина добавленных кодов разная. Очевидно, что для получения наименьшей длины самым коротким должен быть код буквы Е (она встречается чаще всех), следующим – код буквы В. Тогда длина кода для Е – 2 бита, для В –3 , для Д и Н – по4 . Всего потребуется бита. 3х2+2х3+4+4+3=23 бита
Пояснення:
Program Randomizer;
Var a,b,i : Integer;
Const n = 5;//Кол-во попыток
Begin
WriteLn(' Вас приветствует "Randomizer!™"');
ReadLn;
WriteLn(' Компьютер загадал число от 1 до 100, ваша задача отгадать его.');
WriteLn(' Приступим!(Нажмите Enter)');
ReadLn;
WriteLn(' Введите число');
i:= 1;
a:=random(100);
While ((b <> a) and (i < n + 1)) do //Программа не завершится, пока b не станет равной a или n (попытки) не закончатся.
Begin
//If b > 100 then WriteLn('Ошибка - число превышает 100');//Нужно, чтобы при вылете ошибки программа не завершалась и попытки не уменьшались.
ReadLn(b);
If b = a then WriteLn('Вы угадали!') Else
If ((b <> a) and (i <> n)) then WriteLn('Попробуйте другое число...') Else WriteLn(' Попытки закончились! Перезапустите программу.');
inc (i);
End;
End.