Program sum; Uses crt; Var A: array [1..40] of integer; i,s: integer; {i - переменная цикла, s - сумма} Begin clrscr; Writeln ('Введите элементы массива'); for i:=1 to 40 do read(a[i]); writeln; s:=0; for i:=1 to 40 do begin if (i mod 3=0) then s:=s+a[i]; end; Writeln('S = ',s); readln; readkey; end.
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
Uses crt;
Var A: array [1..40] of integer;
i,s: integer; {i - переменная цикла, s - сумма}
Begin clrscr;
Writeln ('Введите элементы массива');
for i:=1 to 40 do
read(a[i]);
writeln;
s:=0;
for i:=1 to 40 do
begin
if (i mod 3=0) then
s:=s+a[i];
end;
Writeln('S = ',s);
readln;
readkey;
end.