Const n=20; var p:array[1..n] of integer; i,k,s:integer; begin Randomize; Writeln('Последовательность чисел'); for i:=1 to n do begin p[i]:=Random(51)-25; Write(p[i],' ') end; Writeln; k:=0; s:=0; i:=1; repeat if p[i]>0 then begin s:=s+p[i]; Inc(k) end; Inc(i); until (k=4) or (i>n); Writeln('Сумма первых четырех положительных чисел равна ',s) end.
Тестовое решение: Последовательность чисел -12 6 -21 5 -10 11 19 19 19 17 21 -4 -14 12 2 0 -20 10 17 -14 Сумма первых четырех положительных чисел равна 41
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
n=20;
var
p:array[1..n] of integer;
i,k,s:integer;
begin
Randomize;
Writeln('Последовательность чисел');
for i:=1 to n do
begin
p[i]:=Random(51)-25;
Write(p[i],' ')
end;
Writeln;
k:=0; s:=0; i:=1;
repeat
if p[i]>0 then begin s:=s+p[i]; Inc(k) end;
Inc(i);
until (k=4) or (i>n);
Writeln('Сумма первых четырех положительных чисел равна ',s)
end.
Тестовое решение:
Последовательность чисел
-12 6 -21 5 -10 11 19 19 19 17 21 -4 -14 12 2 0 -20 10 17 -14
Сумма первых четырех положительных чисел равна 41
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9