Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
program z1;
var a: array [1..15] of real;
i, k, b: integer;
proizv: real;
begin
proizv:= 1;
a[1]:= 0.01;
a[2]:= -3;
a[3]:= 0;
a[4]:= 1.25;
a[5]:= -371;
a[6]:= 0.5;
a[7]:= -0.1;
a[8]:= 1.2;
a[9]:= -5;
a[10]:= -172.3;
a[11]:= 19783;
a[12]:= -2.7;
a[13]:= 43.51;
a[14]:= 0;
a[15]:= -0.02;
b:= -3;
k:= 0;
for i:=1 to 15 do
begin
if (a[i] <> 0) and (a[i] > b) then
begin
proizv:= proizv * a[i];
k:= k+1;
end;
end;
writeln('Количество чисел, подходящих условию: ', k);
writeln('Произведение чисел, подходящих условию: ', proizv);
end.
Объяснение:
На фото нарисована блок-схема, она немного криво сфоткана, надеюсь разберёшься. Если есть вопросы - задавай :)
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9