Семеновна-Павел
?>

Язык python. представлено на фото.

Информатика

Ответы

garikman-flesh486
Предлагается хранить типы блоков в массиве. Каждый элемент - 2Б, количество элементов - 2^20 => всего требуется 2МБ.

При перезаписи блока и очередной переоценке необходимо учитывать типы данных в блоке до перезаписи (T0), после перезаписи (T1) и в соседних блоках (TL, TR).

Если T0 = T1, то количество кусков данных не изменяется, т.е. W[i+1] = W[i]
TL = T0 = TR <> T1 -> W[i+1] = W[i] + 2
TL = T1 = TR <> T0 -> W[i+1] = W[i] - 2
TL = TR, T0 <> TL, T1 <> TL -> W[i+1] = W[i]

Далее рассмотрим случаи, когда TL <> TR
(TL = T0, TR = T1) или (TR = T0, TL = T1) -> W[i+1] = W[i]
(TL = T0, TR <> T1) или (TR = T0, TL <> T1) -> W[i+1] = W[i] + 1
(TL = T1, TR <> T0) или (TR = T1, TL <> T0) - > W[i+1] = W[i] - 1

Если все четыре типа не совпадают, то W[i+1] = W[i]
Если перезаписывается блок с адресом 0, считать, что тип TL не совпадает ни с одним из трех других.Аналогично при перезаписи блока с адресом , но для TR.

Вроде все?
Александрович_Викторовна
// PascalABC.NET 3.0, сборка 1073
const
  m=5;
  n=4;
  a:array[1..m] of real=(2,-7.1,3.2,-5.4,6.9);
  b:array[1..n] of real=(8.1,3.2,-6.4,-3.5);
  k=3;
var
  i,j:integer;
  sk:real;
  s:array[1..m,1..n] of real;
begin
  Writeln('Массив S');
  for i:=1 to m do begin
    for j:=1 to n do begin
      s[i,j]:=a[i]*b[j];
      Write(s[i,j]:7:2)
    end;
    Writeln
  end;
  sk:=0;
  for i:=1 to m do sk:=sk+s[i,k];
  Writeln('Сумма элементов столбца ',k,' равна ',sk)
end.

Результат выполнения программы:
Массив S
  16.20   6.40 -12.80  -7.00
 -57.51 -22.72  45.44  24.85
  25.92  10.24 -20.48 -11.20
 -43.74 -17.28  34.56  18.90
  55.89  22.08 -44.16 -24.15
Сумма элементов столбца 3 равна 2.56

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Язык python. представлено на фото.
Ваше имя (никнейм)*
Email*
Комментарий*