ЗАДАНИЯ ОЧНОГО ТУРА КРАЕВОЙ ОЛИМПИАДЫ ПО ИНФОРМАТИКЕ СТУДЕНТОВ ССУЗОВ (10 марта 2011 г., г. Бийск) Секция «Программирование» Памятка участникам Решенные задачи должны представлять собой скомпилированные программы с именем, соответствующим номеру задачи (например, 1.exe, 2.exe и т.д.), находящиеся в папке на Рабочем столе, наименованной фамилией участника. По желанию могут быть вложены файлы исходных текстов программ (рекомендуется). Программы не должны требовать каких-либо действий со стороны пользователя (например, ввода с клавиатуры и т.п.), содержимое выходного файла должно строго соответствовать условию задачи и приведенным примерам, не должно содержаться посторонних символов, не оговоренных в условии (например, лишних пробелов), поскольку используется автоматическая проверка. Имя входного файла: input.txt Имя выходного файла: output.txt Задача №1 Максимальный балл: 10 Вход — два множества натуральных чисел. Выход — их пересечение (перечисление элементов через пробел, отсортированных по возрастанию, без повторений) или слово empty, если пересечение пусто. Множества A={a1, a2, ..., an} и B={b1, b2, ..., bk} на входе представлены как последовательности натуральных чисел, разделенных пробелом. Возможны повторения элементов, которые надо исключить. Размеры множеств меньше 100. Сами числа меньше 256. Пример: Вход#1 678123 43211 Выход#1 123 Задача №2 Максимальный балл: 10 Вам нужно просто раскрыть скобки В выражении встречаются переменные величины (однобуквенные, от «a» до «z»), знак плюс («+») и скобочки «(» «)». Для умножения не используется никакого знака. Например: (a+b)(c+d)e+f Считайте, что 1) умножение некоммутативно, то есть ab ≠ ba. 2) произведение нескольких скобок следует раскрывать, начиная с самой левой, то есть (a+b)(c+d) = ac + ad + bc + bd, но (a+b)(c+d) ≠ ac + bc + ad + bd 1 Вход — Выражение менее чем из 200 букв. Выход — Если в выражении есть ошибка, то выведите «#error». Иначе выведите результат раскрывания скобок. Пример: Вход#1 (a+b+c)(a+b+f) Выход#1 aa+ab+af+ba+bb+bf+ca+cb+cf Вход#2 (+a) Выход#2 #error Вход#3 ((a) Выход#3 #error Задача №3 Максимальный балл: 5 Вавилонцы решили построить удивительную башню — расширяющуюся к верху и содержащую бесконечное число этажей и комнат. Она устроена следующим образом — на первом этаже одна комната, затем идет два этажа на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее. Эту башню решили оборудовать лифтом — и вот задача: нужно научиться по номеру комнаты определять, на каком этаже она находится и какая она по счету слева на этом этаже. Вход — В первой строчке задан номер комнаты N, 1 ≤ N ≤ 65535. Выход — Два целых числа — номер этажа и порядковый номер слева на этаже. Пример: Вход#1 1 Выход#1 11 Вход#2 5 Выход#2 32 2 Задача №4 Максимальный балл: 25 Найти количество расстановок N ферзей на доске N x N. Ни один ферзь не должен бить другого, т.е. не должно существовать ни одной пары ферзей, стоящих на одной вертикали, горизонтали или диагонали. Вход — Число 1 ≤ N ≤ 15. Выход — Число допустимых расстановок ферзей. Пример: Вход#1 8 Выход#1 92 Задача №5 Максимальный балл: 10 Во входном файле множество натуральных чисел. Причем каждое число встречается четное число раз. Только одно из чисел во входе встречается нечетное число раз. Найдите его. Вход — В первой строчке количество чисел N < 65535. Затем идут N натуральных чисел меньше 65535. Выход — Натуральное число, которое встречается нечетное число раз. Пример: Вход#1 9 3 1 2 2 17 1 3 17 3 Выход#1 3 Вход#2 5 12 13 14 13 12 Выход#2 14 Задача №6 Максимальный балл: 20 В трехмерном пространстве дано несколько замкнутых шаров. Нужно проверить есть ли точка, которая принадлежит всем шарам. Вход — В первой строчке дано число шаров N, 1 < N < 20. Затем идут N строчек, каждая из которых содержит 4 натуральных числа X, Y, Z, R соответствующие координатам центров шаров и их радиусам, |X|, |Y|, |Z| < 10000, 1 ≤ R < 10000, Выход — Строчка со словом NO, если общей точки нет, или YES, если такая точка есть. Пример: Вход#1 2 0001 0021 Выход#1 3 yes 4 Задача №7 Максимальный балл: 20 Найдите число частей, на которые разбили плоскость данные отрезки. Вход — В первой строке записано число отрезков N, натуральное число, не превосходящее 1000. Затем идут N строк с описание отрезков — декартовы координаты концов отрезков, а именно, целые числа Х1, Y1, Х2, Y2, не превосходящие по модулю 65535. Выход — Количество частей, на которые эти отрезки разбили плоскость (включая «внешнюю» часть). Пример: Вход#1 1 1122 Выход#1 1 Вход#2 4 0001 0111 1110 1000 Выход#2 2 5