Задания олимпиады по информатике

реклама
Задания олимпиады по информатике -2013
Задачи теоретической части
В предложенных задачах требуется дать словесное описание алгоритма решения
предложенной задачи (если не оговаривается что-то другое). При проверке решений
(алгоритмов) будут учитываться следующие параметры:
четкость описания алгоритма,
результативность (алгоритм в любом случае должен давать некоторый результат),
корректность (алгоритм должен давать правильный ответ при любых корректных
входных данных),
4.
оптимальность (следует привести по возможности наиболее оптимальный по
количеству шагов алгоритм; из нескольких корректных алгоритмов больше баллов
получит наиболее оптимальный).
1.
2.
3.
Решения задач теоретической части оформляются в виде документа Microsoft Word в
соответствии с техническими требованиями и загружаются для проверки в Виртуальном
кабинете.
1. Деление
На доске записано натуральное число A. За одно действие его делят на 2 и округляют до
ближайшего целого (если округление неоднозначно, то оно производится до меньшего
числа). Напишите эффективный алгоритм, который вычисляет число, полученное после N
таких действий.
2. Алгоритм
В представленной ниже блок-схеме описан рекурсивный алгоритм S с целым
положительным (натуральным) параметром n и натуральными параметрами-переменными
a, b, c.
Определите, что делает данный алгоритм, и опишите нерекурсивный алгоритм, который
делает то же самое.
3. Дороги
В Воссоединенном Королевстве было несколько городов, некоторые из которых
соединены дорогами. Известно, что из каждого города можно было проехать в любой
другой (двигаться можно только по дорогам, переходить с одной дороги на другую можно
только в городе). Также известно, что не было кольцевых маршрутов (то есть, нельзя было
проехать по нескольким разным городам и дорогам и вернуться в тот город, с которого
начали путь). Города, из которых выходила только одна дорога, жители королевства
называли унылыми. Во времена короля Арагорна была также построена ВКАД
(всекоролевская кольцевая арагорнская дорога) – кольцевая цепь дорог, которая по
одному соединила все унылые города.
Наследовавший Арагорну король Эльдарион решил раздать города нескольким герцогам,
но так, чтобы никакие два города одного герцога не были соединены прямой дорогой
(чтобы избежать заговоров). Совет Воссоединенного Королевства, не желая противиться
воле короля, хотел бы, чтобы герцогов было как можно меньше.
Следует придумать алгоритм, который по сохранившейся с тех времен схеме дорог
позволяет найти наименьшее число герцогов, которым можно было бы раздать города с
соблюдением установленных Эльдарионом правил.
4. Угадай строку
Благородный и неразговорчивый Атос задумал строку S из нулей и единиц. Длина строки
известна и равна N. Хитроумный Арамис может придумывать свои строчки из нулей и
единиц и спрашивать у Атоса, есть ли в S несколько идущих подряд символов,
образующих такую строчку (иначе говоря, спрашивать, есть ли такая подстрока в строке,
задуманной Атосом). Атос абсолютно честно отвечает на такие вопросы, говоря «да» или
«нет». Требуется придумать алгоритм, позволяющий хитроумному Арамису за возможно
меньшее число вопросов угадать строку, которую задумал Атос.
Задачи практической части
В практической части олимпиады требуется написать решения задач – программы,
соответствующие техническим требованиям и выполняющие оговоренные условиями
задачи действия, на языке Паскаль или Си.
Для проверки принимаются только исходные тексты программ (файлы *.pas, *.c, *.cpp) в
соответствии с техническими требованиями. Программы (исходные тексты) загружаются
для проверки в Виртуальном кабинете, сразу компилируются и проверяются на наборе
тестов, после чего участнику выдается результат. Допускается вносить изменения в
программы произвольное количество раз и загружать программы для повторной проверки.
Внимание: загрузка работ будет возможна с 19 ноября (c 15:00 МСК). Загружается только
исходный текст программы (файл *.pas, *.c, *.cpp) без архивирования.
С учетом того, что проверка работ практической части ведется а автоматическом режиме,
следует внимательно следить за форматами выходных файлов: несоответствие формата
выходного файла может привести к тому, что результат прохождения теста не будет
засчитан.
Входные данные берутся из текстового файла input.txt, результат выполнения программы
выводится в файл output.txt в установленном формате. Программа ничего не должна
запрашивать для ввода с клавиатуры и не должна ничего выводить на экран.
Ограничения на время выполнения программы по каждому из тестов: 10 секунд.
Программы, не укладывающиеся во время прохождения теста в установленные
ограничения или выдающие ошибку, считаются не прошедшими данный тест.
1. Треугольники
Даны N натуральных чисел: a[1], a[2],…, a[N], являющиеся длинами отрезков. Выяснить,
сколько можно выбрать троек отрезков, из которых можно сложить треугольник?
Вход: файл input.txt, в первой строке которого записано натуральное число N, а в
следующих N строках – по одному натуральному числу (длина соответствующего
отрезка).
Ограничения: 1 ≤ N ≤ 4000, длина каждого отрезка не превосходит 30000.
Выход: файл output.txt, содержащий одно натуральное число – количество способов
выбрать тройку чисел с указанными свойствами.
Пример:
input.txt
4
3
5
output.txt
2
5
8
2. Точки
На плоскости заданы N точек с целыми координатами. Укажите координаты центра и
радиус круга, покрывающего ровно M точек.
Вход: файл input.txt, в первой строке которого записано натуральное число N, во второй
строке – натуральное число M, а в следующих N строках – разделенные пробелом два
целых числа – абсцисса и ордината соответствующей точки на плоскости.
Ограничения: 1 ≤ N ≤ 1000, абсцисса и ордината каждой точки по модулю не превосходит
10000.
Выход: файл output.txt, содержащий три действительных числа с точностью до 0.00001 –
абсцисса и ордината центра круга, радиус круга.
Пример:
input.txt
4
3
-1 -1
-1 1
11
1 -1
output.txt
-1.0 1.0 3.0
3. Автозаправки
Вдоль прямой дороги стоят N автомобильных заправок. Каждая автозаправка может быть
либо государственной, либо принадлежать одному из K частных владельцев.
Монопольный комитет требует, чтобы любые две соседние автозаправки либо
принадлежали одному частному владельцу, либо хотя бы одна из этих двух заправок была
государственной. Найти количество способов распределить эти N автозаправок между
владельцами (государством и K частными собственниками) с сохранением требований
Монопольного комитета.
Вход: файл input.txt, в первой строке которого через пробел записаны натуральные числа
N и K (именно в таком порядке).
Ограничения: 1 ≤ N ≤ 1000, 1 ≤ K ≤ 9.
Выход: файл output.txt, содержащий одно натуральное число – количество способов
распределить автозаправки.
Пример:
input.txt
3 2
output.txt
17
Скачать