ЗАДАНИЯ ОЛИМПИАДЫ

Решения задач загружаются в Виртуальном кабинете.

Задачи теоретической части

В предложенных задачах требуется дать словесное описание алгоритма решения предложенной задачи (если не оговаривается что-то другое). При проверке решений (алгоритмов) будут учитываться следующие параметры:

а) четкость описания алгоритма,
б) результативность (алгоритм в любом случае должен давать некоторый результат),
в) корректность (алгоритм должен давать правильный ответ при любых корректных входных данных),
г) оптимальность (следует привести по возможности наиболее оптимальный по количеству шагов алгоритм; из нескольких корректных алгоритмов больше баллов получит наиболее оптимальный).

Решения задач теоретической части оформляются в виде документа Microsoft Word в соответствии с техническими требованиями и загружаются для проверки в Виртуальном кабинете.

1. Слова

Даны два слова, состоящих из букв A и B произвольной длины. Разрешается выделить в любом из них несколько идущих подряд букв, среди которых есть ровно k букв A, и одну из них перенести в начало слова. Также разрешается выделить в нём несколько идущих подряд букв, среди которых есть ровно k букв B, и одну из них перенести в конец слова. Опишите алгоритм, определяющий, можно ли несколькими такими действиями получить из заданных слов два одинаковых слова (состоящих из A и B).

2. Греко-латинский квадрат

Имеется 16 карт. По четыре туза, короля, дамы и валета, всех четырёх мастей. Говорят, что карты образуют греко-латинский квадрат, если они лежат в таблице 4×4 так, что в каждом горизонтальном и вертикальном ряду есть карты каждой масти и каждого достоинства. Две карты наугад положили в какие-то клетки таблицы 4×4. Опишите алгоритм, по которому можно достроить таблицу до греко-латинского квадрата (если это возможно) или сделать вывод о том, что этого сделать нельзя.

3. Автомат

Имеется автомат, в который можно вставить две карточки с написанными на них числами a и b. Автомат возвращает исходные карточки, а также ещё две – на одной из которых написано число 1–(a/b), а на другой 1–(b/a). Если для получения какой-то из карточек требуется делить на ноль, то эта карточка не возвращается. Как с помощью такого автомата получить сумму двух исходных чисел?

4. Треугольники

Заданы декартовы координаты трех точек на плоскости. Все координаты – целые. Придумайте наиболее оптимальные алгоритмы (требующие наименьшего количества вычислений), которые позволяют ответить на следующие вопросы:

А) Лежат ли эти точки в вершинах прямоугольного треугольника?

Б) Лежат ли эти точки в вершинах равнобедренного треугольника?

В) Лежат ли эти точки в вершинах правильного треугольника?

5. Волейбольный турнир

По волейбольным правилам  команда выигрывает, если она побеждает соперника в трёх сетах. Был проведён турнир, в котором каждая команда, проигравшая игру, выбывает из дальнейшей борьбы. Опишите алгоритм, определяющий, могла ли команда выиграть ровно n сетов и проиграть ровно k сетов.

 

Задачи практической части

В практической части олимпиады требуется написать решения задач – программы, соответствующие техническим требованиям и выполняющие оговоренные условиями задачи действия, на языке Паскаль или Си.

Для проверки принимаются только исходные тексты программ (файлы *.pas, *.c, *.cpp) в соответствии с техническими требованиями. Программы (исходные тексты) загружаются для проверки в Виртуальном кабинете, сразу компилируются и проверяются на наборе тестов, после чего участнику выдается результат. Допускается вносить изменения в программы произвольное количество раз и загружать программы для повторной проверки.

Внимание: загрузка работ будет возможна с 25 ноября. Загружается только исходный текст программы (файл *.pas, *.c, *.cpp) без архивирования.

С учетом того, что проверка работ практической части ведется а автоматическом режиме, следует внимательно следить за форматами выходных файлов: несоответствие формата выходного файла может привести к тому, что результат прохождения теста не будет засчитан.

Входные данные берутся из текстового файла input.txt, результат выполнения программы выводится в файл output.txt в установленном формате. Программа ничего не должна запрашивать для ввода с клавиатуры и не должна ничего выводить на экран.

Ограничения на время выполнения программы по каждому из тестов: 10 секунд. Программы, не укладывающиеся во время прохождения теста в установленные ограничения или выдающие ошибку, считаются не прошедшими данный тест.

1. Простые числа

Даны натуральные n и k. Укажите n идущих подряд натуральных чисел, среди которых ровно k простых.

Вход: файл input.txt, в котором записаны два натуральных числа, разделенных пробелом: первое число – n, второе число – k.

Ограничения: 1 ≤ n ≤ 100, 1 ≤ k ≤ 25.

Выход: файл output.txt, содержащий одно натуральное число – первое число в любой удовлетворяющей условию последовательности из n натуральных чисел. Ответ не превосходит 1000000000.

Пример:

input.txt output.txt
7 2 8

2. Картонные круги

Заданы длины сторон картонного треугольника. Вырежьте из данного треугольника два круга наибольшей возможной суммарной площади.

Вход: файл input.txt, в котором записаны три вещественных числа, разделенных пробелом,  – длины сторон треугольника.

Ограничения: длины сторон не превосходят 100, входные данные корректны (т.е. предполагается, что из отрезков с данными длинами действительно можно составить треугольника).

Выход: файл output.txt, содержащий одно вещественное число – сумму площадей кругов, ответ выводится с точностью до 0.0001.

Пример:

input.txt output.txt
10 10 10 29.0888

3. Расписание

В  однокруговом  турнире участвуют 2n команд. В каждом туре все команды разбиваются на n пар (в одну пару не попадают команды, ранее игравшие друг с другом) и проводят между собой, соответственно, n игр (по одной игре в паре). Прошло n-1 туров. Составьте расписание ещё двух туров.

Вход: файл input.txt, в котором записаны натуральные числа;

первая строка:  число n,

вторая строка: через пробел перечислены номера соперников команды №1 в 1, 2, …, (n-1) туре (соответственно, всего n-1 число);

третья строка: аналогично перечислены соперники команды №2 в 1, 2, …, (n-1) туре;

(2n+1)-я строка: перечислены соперники команды №(2n) в 1, 2, …, (n-1) туре.

Ограничения: 2 ≤ n ≤ 50.

Выход: файл output.txt, содержащий 2n строк с числами – в k-й строке (1 ≤ k ≤ 2n) через пробел указаны номера двух команд, с которыми k-я команда сыграет в турах с номерами n и (n+1) соответственно.

Пример:

input.txt output.txt

3

2 6

1 3

4 2

3 5

6 4

5 1

3 4

5 6

1 5

6 1

2 3

4 2

 

Пример соответствует такой ситуации

1 тур: играют команды 1-2, 3-4 и 5-6,

2 тур: играют команды 1-6, 2-3 и 4-5,

вариант расписания для третьего и четвертого тура:

3 тур: играют команды 1-3, 2-5 и 4-6,

4 тур: играют команды 1-4, 2-6 и 3-5.