Составьте программу, которая заполняет массив а [1..10] случайными целыми числами в диапазоне от 1 до 10, затем преобразовывает его, увеличие все элементы с нечетными значениями в 3 раза, а элементы с четными значениями заменяя на 0 (паскаль)
Var a: array[1..10] of Integer; i,s,d: Integer; begin for i:=1 to 10 do begin a[i]:=Random(10-1+1)+1; writeln('Число: ',a[i]); end; for s:=1 to 10 do begin if a[s] mod 2<>0 then a[s]:=a[s]*3 else a[s]:=0; end; for d:=1 to 10 do begin writeln(a[d]); end; end.
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого.
Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.
То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.
Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.
Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.
В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.
Оба варианта подходят, кратчайшая суммарная длина - 9
i,s,d: Integer;
begin
for i:=1 to 10 do
begin
a[i]:=Random(10-1+1)+1;
writeln('Число: ',a[i]);
end;
for s:=1 to 10 do
begin
if a[s] mod 2<>0 then a[s]:=a[s]*3 else a[s]:=0;
end;
for d:=1 to 10 do
begin
writeln(a[d]);
end;
end.