Задача A - V Открытый чемпионат БГУИР по программированию

advertisement
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача A: За-четность
Ограничение по времени: 1 сек.
В известном математическом центре придумали новое понятие "за-четности" дробного
числа. По введенному математиками определению дробное число считается "за-четным",
если в десятичной записи дробной части числа присутствует хотя бы одна четная цифра.
Степенью "за-четности" называется номер позиции самой правой четной цифры, при этом
позиции цифр нумеруются с 1 справа налево, начиная с позиции крайней правой значащей
(1..9) цифры.
Необходимо определить степень "за-четности" заданного числа (в нашем случае "0" не
считается четной цифрой).
Ввод:
В первой строке записана дробная часть числа X (0 < X < 1). Запись дробной части
начинается с ".", после которой следуют не более, чем 103 десятичных цифр.
Вывод:
Выведите целое число – степень "за-четности". Если в записи дробной части числа
отсутствуют четные цифры – вывести "NO".
Пример:
Ввод
Вывод
.20340500
.135
3
NO
1
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача B: Разрезания
Ограничение по времени: 1 сек.
Лист в клеточку имеет размеры N×M клеток. Его нельзя переворачивать, зато можно
разрезать вдоль горизонтальных и вертикальных линий. После каждого разрезания
выбрасывается меньшая часть листа, а в случае равенства частей – правая или нижняя
половинка.
Разрезания всегда проводятся до тех пор, пока лист не станет размером 1×1. Две
последовательности разрезания считаются различными, если отличаются хотя бы одной
линией разреза. Необходимо посчитать количество различных последовательностей
разрезания листа размерами N×M клеток.
Ввод:
В первой строке записаны числа N, M – размеры листа (1  N, M  1000), а также число P
(109  P  2*109). Числа разделены пробелами.
Вывод:
Искомое количество последовательностей, взятое по модулю P.
Пример:
Ввод
Вывод
3 4 1000000007
2 3 1000000007
92
6
2
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача C: Киноиндустрия
Ограничение по времени: 1 сек.
Постановка боевых сцен в кинематографе – целое искусство. Здесь есть место и
зрелищности, и реалистичности, и непредсказуемости. Жаль, что об эффективности
действий киногероев режиссеры зачастую не задумываются… В этой задаче Вам предстоит
исправить эту ошибку.
В очередном фильме про Джеймса Бонда, планируется постановка боевой сцены с толпой
вооруженных террористов. По сюжету вертолет доставляет Джеймса Бонда в захваченную
зону, после чего агент прыгает сверху на одного из террористов, обезвреживая его голыми
руками. Далее Бонд достает два своих пистолета (по одному в каждую руку), разводит руки
в стороны (на угол равный 180 градусам) и, стреляя каждый раз одновременно из двух
пистолетов, поочередно поражает противников (достаточно одной пули для каждого), при
этом оставаясь на месте приземления. Агент не может менять положение рук, но может
двигаться вокруг своей оси, что позволяет ему максимально быстро выполнить свою
миссию и спасти человечество. Конечно же, сам агент 007 полностью неуязвим и может
игнорировать выстрелы противников.
Ввод:
В первой строке записано целое число N (1 <= N <= 1000) – число террористов. Далее в N
строках через пробел записаны координаты террористов – целые числа Xi, Yi, не
превышающие по модулю 109. Координаты всех террористов различны.
Вывод:
В первой строке выведите минимальное количество пуль, которое потратит Джеймс Бонд
для уничтожения всех противников, если будет действовать по описанной в условии
стратегии. Во второй строке – номер террориста (нумерация с 1), который должен быть
обезврежен первым для получения оптимального решения. Если таких террористов
несколько, выберите минимального по номеру.
Пример:
Ввод
Вывод
7
-1 0
-1 1
0 0
0 1
0 -1
2 0
1 0
8
3
Пояснение: уничтожение террористов с номерами 2 и 6 потребует две лишних пули.
3
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача D: Максимальный XOR
Ограничение по времени: 1 сек.
Даны два числа A и B. Требуется переставить биты в N-разрядном двоичном представлении
этих чисел так, чтобы их поразрядная сумма (операция XOR – биты складываются попарно
без переноса) была максимально возможной.
Ввод:
В единственной строке записаны целые числа N (1 ≤ N ≤ 64), A и B (0 ≤ A, B < 2n).
Вывод:
Максимальная поразрядная сумма чисел A и B в соответствии с условием.
Пример:
Ввод
Вывод
5 5 6
30
Пояснение.
Переставим биты следующим образом:
A = 100102
B = 011002
A XOR B = 111102 = 3010
4
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача E: Плюсадин
Ограничение по времени: 1 сек.
Студенты одного из медицинских институтов действительно придумали средство от головы
с таким названием… Особенно эффективно оно помогает во время потоковых лекций
студентам, сидящим на последних рядах. К счастью, речь идет не о лекарстве, а о
простейшей игре, правила которой описаны ниже.
Вначале все договариваются о некотором числе N, которое будет означать конец игры. Из
тетради вырывается лист, в самой верхней строке которого записывается число A0 = 0.
Далее студенты по очереди совершают следующие ходы: верхняя строка отрывается от
листа и в виде скомканного комочка бумаги летит в кого-то из соседей, а в следующую
строку записывается число Ai, равное числу Ai-1 + 1 в любой допустимой системе счисления.
Игра заканчивается, когда кто-то из студентов записывает на бумагу число N. Строка с
числом N не отрывается, а вместе с листом остается в руках победителя в качестве трофея.
Опишем подробнее, как выполняется ход. Пусть на листе записано число Ai-1 = 213. Тогда
число Ai
может быть вычислено как:
1) Ai = 2134 + 14= 2204 (используется система счисления с основанием 4);
2) Ai = 2135 + 15= 2145 (используется система счисления с основанием 5);
и т.д.
Допустимыми в данном примере являются все системы счисления с основанием больше 3-х
(т.к. цифра 3 содержится в числе 213).
Все бы было прекрасно, будь Вы по ту сторону баррикад… Но Ваша роль в этой задаче другая
– помочь лектору оценить масштаб ущерба, который нанесут аудитории студенты своими
летающими комочками бумаги.
Ввод:
Целое положительное число N, не превышающее 1018.
Вывод:
Минимальное возможное число комочков бумаги, которое образуется в процессе игры
до ее завершения.
Пример:
Ввод
Вывод
12
4
5
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача F: Таракан в лабиринте
Ограничение по времени: 1 сек.
Одной из наиболее известных задач искусственного интеллекта является поиск пути в
лабиринте. Экспериментально доказано, что некоторые виды насекомых справляются с ней
лучше всех существующих программ. Выявление принципов, по которым насекомые
выбирают близкий к оптимальному маршрут, является серьезной научной проблемой.
Однако не все насекомые блещут такими способностями. Например, обычный городской
таракан, давно потерявший связь с природой и пристрастившийся к генетически
модифицированным продуктам, почти полностью утратил навыки навигации. Тем не
менее, в силу многочисленности популяций, представители этого подвида отлично
подходят для проведения экспериментов в лабораториях.
Поле для проведения эксперимента представляет собой прямоугольник, разбитый на
одинаковые ячейки, длиной в N и шириной в M ячеек. В некоторых точках поля
расположены непроходимые препятствия. Все поле окружено границей, прохождение через
которую невозможно. Известно, что между любой парой свободных ячеек поля
существует только один путь, проходящий по смежным (по 4-м сторонам) ячейкам.
Опишем, как таракан, находясь в свободной ячейке, определяет следующий шаг:
Если среди смежных клеток есть еще не посещенные, таракан случайным образом выбирает
одну из них и переходит туда, иначе – двигается в обратную сторону по своему маршруту,
выбирая среди смежных точек посещенную раньше всех, пока не найдет возможность
перейти в какую-то не посещенную клетку.
В лаборатории с неисчерпаемым ресурсом тараканов постоянно ведутся исследования…
Работа столь упорна, что число проводимых опытов стремится к бесконечности. Ваша
задача – определить среднее по всем опытам число шагов, которое делают тараканы при
движении из фиксированной стартовой точки в конечную.
Ввод:
В первой строке через пробел заданы целые положительные числа N и M, причем
гарантируется, что 2 <= (N x M) <=105.
Далее в N строках по M символов в каждой задано описание поля. Ячейки с
символом ‘.’ –
свободные, ячейки с символом ‘#’ – препятствия, ячейка с символом ‘S’ – стартовая
позиция таракана, ячейка с символом ‘F’ – конечная позиция.
Вывод:
Искомое значение, округленное до 6-ти знаков после запятой.
Пример:
Ввод
Вывод
4 5
S#...
.#.#.
...F#
#####
10.000000
6
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача G: Цепочка 1
Ограничение по времени: 1 сек.
Рассмотрим цепочку из N звеньев (цепочка закольцована). Какое минимальное количество
звеньев необходимо удалить из цепочки, чтобы из оставшихся кусков и удаленных звеньев
можно было сцепить цепочку любой длины: от 1 до N звеньев ?
Ввод:
В первой строке вводится число N (3 <= N <= 109).
Вывод:
В первой строке выведите одно целое число – ответ на задачу.
Пример:
Ввод
Вывод
3
9
1
2
7
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача H: Цепочка 2
Ограничение по времени: 1 сек.
Посчитать количество различных, закольцованных последовательностей длиной N, где a[i]
= 0/1 (0 или 1). Две последовательности считаются различными, если из одной нельзя
получить вторую путем циклических сдвигов.
Ввод:
В первой строке вводится число N (1 <= N <= 30).
Вывод:
В первой строке выведите целое число – количество различных, закольцованных
последовательностей из 0 или 1 длиной N.
Пример:
Ввод
Вывод
4
6
8
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача I: Перестановки
Ограничение по времени: 2 сек.
Перестановкой называется любая последовательность из K чисел, где каждый элемент
уникальный и принимает значения от 1 до K. Примеры:
1 2 3 4 5 - перестановка
2 5 1 4 3 - перестановка
1 2 6 3 4 – не перестановка
2 3 1 3 4 – не перестановка
Дана последовательность a из N чисел и Q запросов, представляющие собой пары чисел: L и
R. Нужно каждый раз отвечать на запрос: образуют ли числа a[L], a[L + 1], … a[R]
перестановку.
Ввод:
В первой строке вводится число N (1 <= N <= 111111).
Во второй строке содержатся N целых чисел a[i] (1 <= a[i] <= N), разделенные пробелом.
В третьей строке вводится число Q (1 <= Q <= 1111111).
В последующих Q строчка вводится пара чисел L и R (1 <= L <= R <= N),
Вывод:
Выведите на каждый запрос YES – если для текущего запроса a[L], a[L + 1], … a[R] образуют
перестановку и NO - иначе.
Пример:
Ввод
1
1
1
1
3
1
4
2
2
1
1
Вывод
YES
1
NO
YES
NO
YES
2 1
2
3
3
2
9
Открытый чемпионат БГУИР по программированию 2011
04-10 Апреля 2011, 1 отборочный тур
Задача J: Тор
Ограничение по времени: 1 сек.
Дан лист бумаги NxM. Найти кратчайший путь между клетками с координатами X0, Y0 и X1,
Y1. При движении из клетки (X0, Y0) можно двигаться в одну из 4-х соседних клеток. Лист
бумаги закольцован со всех сторон, то есть из клетки (1, 1) можно попасть в клетку (N, 1) и
(1, M) за один шаг.
Ввод:
В первой строке вводятся 6 чисел: N, M, X0, Y0, X1, Y1. (1 <= N, M <= 10^9; 1 <= X0, X1 <= N; 1 <=
Y0, Y1 <= M)
Вывод:
В первой строке вывести целое число – кратчайший путь между двумя клетками.
Пример:
Ввод
7 6 3 2 4 3
Вывод
2
10
Download