Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Задача в неделю. Олимпиадные задачи по информатике. Разбор задания 4-го занятия


Центр информатизации образования ИРО ХМАО-Югры

Югорский государственный университет

Югорский НИИ информационных технологий

Телекоммуникационный проект "Задача в неделю"

Разбор занятия № 4

Задача взята из книги И.Н. Порублева и А.Б. Ставровского <Алгоритмы и программы. Решение олимпиадных задач>.

Заведем массив из 10001 элемента, которые вначале приравняем нулю. В случае (а) при чтении чисел последовательности элементы массива с соответствующим номером приравниваем единице. Так как числа в последовательности не превышают 10000, то хотя бы один элемент массива останется нулевым. Его номер и будет ответом. В случае (б) также читаем числа последовательности. Если они больше 10001, то их пропускаем, в противном случае элемент массива присваиваем 1. Так как элементов не больше 10000, то хотя бы один из элементов массива останется нулевым. Найдем нулевой элемент с наименьшим номеров.

 

var

  k, x : integer;

  y : longint;

  a : array [1..10001] of integer;

begin

  assign(input,'input.txt'); reset(input);

  assign(output,'output.txt'); rewrite(output);

  for k:=1 to 10001 do a[k]:=0;

  readln(k);

  if k=1 then

  begin

       while not eoln do

       begin read(x); a[x]:=1 end

  end else

  begin

       while not eoln do

       begin read(y); if y<=10001 then a[y]:=1 end

  end;

  k:=1;

  while a[k]=1 do k:=k+1;

  write(k)

end.

 

Работы тестировались на 20 тестах (по 1 баллу за тест). Эти тесты можно взять в материалах занятия.

 

Успехов!

Ведущий проекта, кандидат педагогических наук

Александр Владимирович Алексеев,

e-mail - aav@uriit.ru



В избранное