Темы
    Информатика(2656 задач)
---> 8 задач <---
Страница: << 1 2 Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Палиндром - это строка, которая читается одинаково как справа налево, так и слева направо.

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

Входные данные

В первой строке входных данных содержится число \(N\) (1 <= \(N\) <= 100000). Во второй строке задается последовательность из \(N\) больших латинских букв (буквы записаны без пробелов).

Выходные данные

В единственной строке выходных данных выдайте искомый палиндром.

Группы тестов

25 баллов — (1 ≤ N ≤ 10) .

25 баллов — (1 ≤ N 1 000 ) .

50 баллов — полные ограничения.

Примечание

Сложность работы программы должна быть O(n). Использование встроенной сортировки(sort, sorted), алгоритмов сортировки пузырёк/quick sort/merge sort и других запрещено!



Примеры
Входные данные
3
AAB
Выходные данные
ABA
Входные данные
6
QAZQAZ
Выходные данные
AQZZQA
Входные данные
6
ABCDEF
Выходные данные
A
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Учительница математики попросила школьников составить арифметическое выражение так, чтобы его значение было равно данному числу \(N\), и записать его в тетради. В выражении могут быть использованы натуральные числа, не превосходящие \(K\), операции сложения и умножения, а также скобки. Петя очень не любит писать, и хочет придумать выражение, содержащее как можно меньше символов. Напишите программу, которая поможет ему в этом.

Входные данные

В первой строке входных данных содержатся два натуральных числа: \(N\) (1 <= \(N\) <= 10000) - значение выражения и \(K\) (1 <= \(K\) <= 10000) - наибольшее число, которое разрешается использовать в выражении.

Выходные данные

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

Примечание

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

Примеры
Входные данные
7 3
Выходные данные
5
3+1+3
Входные данные
15 20
Выходные данные
2
15
Входные данные
176 1
Выходные данные
41
(1+1+1+1)*(1+1+1+1)*(1+1+(1+1+1)*(1+1+1))
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

Восстановите нарисованный Васей многоугольник.

Входные данные

В первой строке входных данных содержатся два натуральных числа: \(Y\) - количество строк и \(X\) - количество столбцов листа (3 <= \(Y\) <= 1000, 3 <= \(X\) <= 1000). В каждой из следующих \(Y\) строк задается по \(X\) целых неотрицательных чисел, не превосходящих 4. Ни одна из сторон многоугольника не проходит по границе листа бумаги.

Выходные данные

Выведите искомый многоугольник в следующем формате.

Выходные данные должны содержать \(Y\) строк по 2\(X\)-1 символов в каждой (по одному символу на клетку и линию между клетками).

В первой строке выведите вертикальные отрезки в верхнем ряду клеток, обозначая их символом | (вертикальная черта - символ с кодом 124) и горизонтальные отрезки, отделяющие первый ряд клеток от следующего, обозначая их символом _ (подчеркивание). Если соответствующий отрезок в данном многоугольнике отсутствует, выведите вместо него символ . (точка). Во второй строке выведите в том же формате вертикальные отрезки во втором ряду и горизонтальные отрезки, отделяющие второй ряд от третьего. И т.д. В каждой строке на нечетных местах могут стоять только символы точка или подчеркивание, на четных местах - символы точка или вертикальная черта.

Гарантируется, что хотя бы одно решение существует. Если решений несколько, выведите любое из них.

Примеры
Входные данные
4 4
0 0 1 0
0 2 3 1
1 3 2 1
0 1 1 0
Выходные данные
...._..
.._|.|.
.|_._|.
.......

Страница: << 1 2 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест