Даны два монотонно возрастающих массива. Найти количество общих элементов в этих массивах, то есть количество тех элементов, для которых x[i]=y[j] для некоторых i и j. Число действий порядка n+m. Элементы массива- натуральные числа от 1 до 10000

Вопрос школьника по предмету Информатика

Даны два монотонно возрастающих массива. Найти количество общих элементов в этих массивах, то есть количество тех элементов, для которых x[i]=y[j] для некоторых i и j. Число действий порядка n+m. Элементы массива- натуральные числа от 1 до 10000

Ответ учителя по предмету Информатика

Данные в каждый массив вводим по строго по возрастанию через пробел, признак окончания ввода — число 0 или отрицательное, в конце ввода Enter.

// PascalABC.NET 3.2, сборка 1439 от 09.05.2017

// Внимание! Если программа не работает, обновите версию!

begin

  var a:=ReadSeqIntegerWhile(‘Последовательность 1:’,t->t>0).ToArray;

  var b:=ReadSeqIntegerWhile(‘Последовательность 2:’,t->t>0).ToArray;

  (var n,var m):=(a.Length-1,b.Length-1);

  (var i,var j,var k):=(0,0,0);

  repeat

    if a[i]=b[j] then begin k+=1; i+=1; j+=1 end

    else

      if a[i]<b[j] then i+=1 else j+=1;

  until (i>n) or (j>m);

  Writeln(‘k=’,k)

end.

Пример

Последовательность 1: 2 3 5 8 11 14 19 23 38 0

Последовательность 2: 1 3 4 5 6 9 11 14 17 18 21 23 29 0

k=5

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей