Програмування 2013

На цій сторінці розглянуті деякі задачі, які пропонувались на обласному етапі олімпіади з інформатики у Івано-Франківській області.

1. Відсутнє натуральне число (10 балів).
Дано послідовність з N довільних чисел (N<10000) не більших за 50000. Необхідно знайти найменше натуральне число, якого немає в послідовності.

Формат вхідних даних.
У вхідному файлі в першому рядку записано число N, а в наступних N рядках - натуральні числа (по одному на рядок).
Формат вихідних даних
У вихідний файл вивести знайдене натуральне число.
Приклад:
Вхід:     5                              Вихід:   3
              2
              7
              4
              2
              1
Для розв’язання даної задачі зчитаємо дані у масив і виконаємо сортуванння масиву за зростанням. Після цього переглядаючи елементи масиву легко знайти відсутнє число.

program masiv;

var
  a: array[1..10000] of integer; 
  i, j, k, n: integer;
  g: real;

begin
  readln(n);
  for i := 1 to n do readln(a[i]);
  for i := 1 to n - 1 do
    for j := i + 1 to n do                  {сортування перестановками}
      if a[j] < a[i] then 
        swap(a[i], a[j]);              // у деяких компіляторах swap не працює
  //g:=a[i];a[i]:=a[j];a[j]:=g;          тоді так.
  i := 1;
  repeat
    i := i + 1;
  until a[i] + 1 <> a[i + 1];
  writeln(a[i] + 1);
end.

2. Видалення символів (20 балів)
Дано текст. Серед символів тексту особливу роль відіграє символ #, поява якого в тексті означає взаємне видалення його та попереднього символу тексту (відмінного від #  ). Відповідно k символів # підряд видаляють k попередніх символів тексту (не # ), якщо такі є в рядку. Потрібно написати програму, що перетворює текст з урахуванням вказаних символів #.
 Зауваження:
  • якщо в якийсь момент перед деякими символами у цьому рядку не залишилося символів, то символи слід ігнорувати;
  • у вихідний файл символи виводити не потрібно в жодному випадку;
  • Якщо в результаті перетворень всі симовли в рядку вхідного файлу були видалені, то у вихідному файлі в цьому місці слід вивести порожній рядок.
 Формат вхідних даних
У вхідному файлі не менше одного і не більше 100 рядків тексту. Кожен рядок містить не більше 200 символів.
Формат вихідних даних

У вихідний файл для кожного рядка вхідного файлу слід вивести його перетворений варіант.

Приклад

Hello ww#orld!                           Hello world!
z##
a#a##bc#                                  b
the##he end.                             the end.

Нижче наведений текст програми, який виконує вказані перетворення.Програма обробляє один рядок. Але при необхідності її легко доробити, щоб вона повністю відповідала умові задачі


program ddd;
var
  a: string[200];
  i: integer;
begin
  readln(a);
  while pos('#', a) <> 0 do
  begin
    if pos('#', a) = 1 then delete(a, pos('#', a), 1) else delete(a, pos('#', a) - 1, 2);
  end;
  writeln(a);
end.









Немає коментарів:

Дописати коментар