В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Job121
Job121
18.04.2021 18:17 •  Информатика

Известно, что слово КАШКА закодировали с последовательности 1110110011101. При этом код удовлетворяет условию Фано. Найдите минимальную длину кодовой последовательности для слова ПАМПУШКА? Известно, что другие буквы в кодируемой последовательности встретиться не могут.

Показать ответ
Ответ:
89670198045
89670198045
03.01.2023 02:39
Const
  mm = 10;
  nn = 8;

type
  M = array[1..mm, 1..nn] of integer;
  KS = array[1..2, 1..nn] of integer;

procedure GetKS(var a: M; var b: KS; m, n: integer);
{ Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам,
  а в b[2,*] - количества этих элементов }
var
  i, j, s, k: integer;
begin
  for j := 1 to n do
  begin
    k := 0; s := 0;
    for i := 1 to m do
      if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end;
    b[1, j] := s; b[2, j] := k
  end
end;

procedure Init(var a: M; m, n: integer);
{ Заполняет массив a[m,n] случайными значениями на интервале [-50;50]
  и выводит их на экран }
var
  i, j: integer;
begin
  for i := 1 to m do
  begin
    for j := 1 to n do
    begin
      a[i, j] := Random(101) - 50;
      Write(a[i, j]:5)
    end;
    Writeln
  end
end;

procedure OutKS(var a: KS; n: integer);
{ Выводит на экран элементы массива a[2,n]}
var
  i, j: integer;
begin
  for i := 1 to 2 do
  begin
    for j := 1 to n do Write(a[i, j]:5);
    Writeln
  end
end;

procedure Work(var a: M; var b: KS; m, n: integer);
{ цикл работы с массивом }
begin
  Init(a, m, n);
  GetKS(a, b, m, n);
  Writeln('Суммы и количество');
  OutKS(b, n);
end;

var
  X, Y: M;
  Z: KS;

begin
  Writeln('Массив Х');
  Work(X, Z, 10, 8);
  Writeln;
  Writeln('Массив Y');
  Work(Y, Z, 6, 8);
end.

Тестовое решение:
Массив Х
  -50   49    0   28   -8  -27   -4  -45
   10   10   10   27   17   15  -35   47
  -22  -42   21   40  -40   -4    1  -49
  -21   37    5  -34   26   10  -33  -26
    2   27   30  -46   -9   -2   33    2
   -3    6   -9  -38  -29  -18  -36   28
   -8   39  -16   49  -50   39  -37    5
   -2   -2   -2    6   18  -21  -20  -50
   -7  -15  -26   40   35  -40    5   31
  -25  -31   -8    4  -45  -11   31   48
Суммы и количество
 -138  -90  -61 -118 -181 -123 -165 -170
    8    4    5    3    6    7    6    4

Массив Y
   22   27   24   38  -24  -32  -26   13
   14  -25    6   44   50  -24   34  -33
  -24  -10   20   36  -43  -25   44  -19
  -17    4   23   31   -4    9   -1  -41
   17    1   34   42    6   -8   25  -26
  -40   11  -24   10    4   12   31   50
Суммы и количество
  -81  -35  -24    0  -71  -89  -27 -119
    3    2    1    0    3    4    2    4
0,0(0 оценок)
Ответ:
ALINAscool9898
ALINAscool9898
03.07.2022 17:00
Var 
 A:array[1..60] of integer;
 k,i,MIN,ind, MAX,SUM:integer;
begin
 SUM:=0;
 readln(k);
 randomize;
 writeln('Исходный массив:');
 for i:=1 to 60 do
  begin
    A[i]:=random(15)-5;
    Writeln('A[',i,']=',A[i]);
   end;
 MIN:=32600;
 MAX:=-32600;
 for i:=1 to 60 do //Ищем минимальный элемент
  begin
   if a[i]<MIN then
    MIN:=a[i];
    ind:=i;
  end;
 for i:=1 to 60 do //Ищем максимальный элемент 
    if a[i]>MAX then
       MAX:=a[i];
 for i:=60 downto 60-k do //Сумма последних k элементов 
  SUM:=SUM+a[i];
 A[ind]:=SUM;
if A[1]>=0 then 
  for i:=1 to 60 do
   begin 
     A[i]:=A[i]*sqr(MIN);
     Writeln('A[',i,']=',A[i]);
   end
 else 
  for i:=1 to 60 do
   begin
     A[i]:=A[i]*sqr(MAX);
     Writeln('A[',i,']=',A[i]);
    end;
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота