На цій сторінці розглянуті деякі задачі, які пропонувались на обласному етапі олімпіади з інформатики у Івано-Франківській області.
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.
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.
Немає коментарів:
Дописати коментар