Страница: << 46 47 48 49 50 51 52 >> Отображать по:
ограничение по времени на тест
0.5 second;
ограничение по памяти на тест
64 megabytes

a

a

b

r

a

k

a

b

r

a

k

a

a

k

a

a

b

r

b

r

a

k

a

a

k

a

a

b

r

a

r

a

k

a

a

b

Во время своей работы алгоритм сжатия данных методом «сортировки блока» применяет к блокам данных преобразование, которое определяется следующим образом.

Строка P называется ротацией строки S, если она образована циклическим сдвигом символов S, т.е. если S=a1a2aN, где aii–ый символ строки S, то P=apap+1aNa1ap-1, где 1pN. Рассмотрим таблицу M размера NN, строками которой есть все ротации строки S, отсортированные в лексикографическом (словарном) порядке
по возрастанию.

Пусть строка L есть последний столбик таблицы M. Прямое преобразование получает на вход строку S, выдает строку L и число Kномер строки таблицы M, который содержит строку S. (Если таких строк несколько, выдается номер любой из них).

Для S='abraka' таблица M изображена на рисунке. Строка S находится во второй строке таблицы M, L=‘karaab’.

Напишите программу, которая выполняет обратное преобразование, т.е. получает на вход строку L и число K, и выдает строку S.

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

Первая строка входного файла содержит два целых числа: K и N, 1N30000, 1&let;KN. Вторая строка содержит N символов строки L — маленьких латинских букв.

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

Единственная строка выходного файла должна содержать строку S.

Примеры
Входные данные
2 3
unn
Выходные данные
nun
Входные данные
3 7
jubcirt
Выходные данные
irtucjb
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

Каждое число в последовательности не равно 0, и его запись начинается с единицы. Количество цифр в двоичной записи числа не превышает 25. Общее количество цифр на циферблате не больше чем 100.

Циферблат может быть разбит на сектора. На рисунке изображен привычный нам циферблат с числами от 1 до 12 (в немного непривычном виде). Он разбит на 4 сектора. Суммы в секторах будут 1, 15, 18 и 36.

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

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

В единственной строке входного файла задана последовательность чисел. Числа последовательности разделены пробелом.

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

В единственной строке выходного файла должно находиться натуральное число — количество искомых разбиений циферблата на сектора.

Примеры
Входные данные
10 11 10
Выходные данные
9
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

Некоторые компьютеры могут быть соединены циклически. Цикл называется простым, если каждый компьютер из этого цикла соединён ровно с двумя другими компьютерами этого цикла, и в этот цикл никакой кабель не входит более одного раза. Некоторые кабели могут не входить ни в какой цикл.

Известно, что в разработанной схеме никакой кабель не принадлежит двум простым циклам одновременно.

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

1.Компьютеры размещаются на плоскости в точках с целочисленными координатами.

2.Координаты компьютеров x и y лежат в диапазоне 0  x, y  106.

3.Никакие два компьютера не располагаются в одной точке.

4.Кабели являются отрезками прямых.

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

Требуется написать программу, выполняющую размещение компьютеров по заданному описанию схемы.

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

В первой строке входного файла содержатся числа N и M  количество компьютеров и количество кабелей в схеме (1  N  100 000, 0   M  200 000). В последующих M строках содержатся пары чисел, разделенных пробелами. Каждая такая пара описывает один кабель, числа представляют собой номера соединенных компьютеров. Компьютеры пронумерованы от 1 до N. Никакая пара не встречается дважды, и никакой кабель не соединяет компьютер с самим собой.

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

Выходной файл должен содержать N строк. Строка с номером i должна содержать координаты i-го компьютера, разделенные пробелом. Сначала выводится координата x, затем y. Разрешается вывести любой вариант размещения компьютеров, при котором выполняются условия 1–5.

Примечания

  • Подзадача 0 (0 баллов) тесты из условия.
  • Подзадача 1 (10 баллов) \( n \le 10\) граф без циклов.
  • Подзадача 2 (20 баллов) \( n \le 10^3\) граф без циклов. Необходимые подгруппы: 1.
  • Подзадача 3 (10 баллов) \( n \le 10^5\) граф без циклов. Необходимые подгруппы: 1, 2.
  • Подзадача 4 (4 баллов) \( n \le 10\) граф с одним циклом.
  • Подзадача 5 (8 баллов) \( n \le 10^3\) граф с одним циклом. Необходимые подгруппы: 4.
  • Подзадача 6 (8 баллов) \( n \le 10^5\) граф с одним циклом. Необходимые подгруппы: 4, 5.
  • Подзадача 7 (4 баллов) \( n \le 10\) граф, в котором каждая вершина лежит не более чем на одном цикле.
  • Подзадача 8 (8 баллов) \( n \le 10^3\) граф, в котором каждая вершина лежит не более чем на одном цикле. Необходимые подгруппы: 7.
  • Подзадача 9 (8 баллов) \( n \le 10^5\) граф, в котором каждая вершина лежит не более чем на одном цикле. Необходимые подгруппы: 7, 8.
  • Подзадача 10 (2 баллов) \( n \le 10\) граф, в котором каждое ребро лежит не более чем на одном цикле.
  • Подзадача 11 (4 баллов) \( n \le 10^3\) граф, в котором каждое ребро лежит не более чем на одном цикле. Необходимые подгруппы: 10.
  • Подзадача 12 (14 баллов) \( n \le 10^5\) граф, в котором каждое ребро лежит не более чем на одном цикле. Необходимые подгруппы: 10, 11.

Пример входных и выходных данных

Ввод

Вывод

13 14

11 12

11 13

1 3

3 5

5 8

8 9

8 6

6 3

4 6

4 2

6 10

10 11

10 7

7 4

1 0

3 0

1 1

3 1

0 2

2 2

4 2

1 3

1 4

3 3

3 4

2 5

4 5



ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes
Заданы параллелепипеды с целочисленными координатами. Необходимо выбрать минимальный набор параллелепипедов, покрывающих горизонтальный слой.

Над ареной огромного спортивного комплекса Независимого Главного Университета (НГУ) решили построить перекрытие. Перекрытие будет построено по клеевой технологии и состоять из склеенных друг с другом блоков. Блок представляет собой легкий прямоугольный параллелепипед. Два блока можно склеить, если они соприкасаются перекрывающимися частями боковых граней ненулевой площади.

НГУ представил план комплекса, имеющий вид прямоугольника размером W на L. При этом один из углов прямоугольника находится в начале системы координат, а другой имеет координаты (WL). Стены комплекса параллельны осям координат.

Подрядчики известили НГУ, что они готовы к определенному сроку изготовить блоки и установить их. Для каждого блока фиксировано место его возможного монтажа, совпадающее по размерам с этим блоком. Места выбраны так, что ребра блоков параллельны осям координат. Места монтажа блоков не пересекаются.


По техническим условиям перекрытие должно состоять из такого набора склеенных блоков, который содержит сплошной горизонтальный слой ненулевой толщины. Торопясь ввести комплекс в эксплуатацию, НГУ решил построить перекрытие из минимально возможного числа блоков.

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

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

В первой строке входного файла указаны три целых числа: N — количество возможных блоков (1 ≤ N ≤ 105) и размеры комплекса W и L (1 ≤ WL ≤ 104). Каждая из последующих N строк описывает место монтажа одного блока, определяемое координатами противоположных углов: (x1y1z1) и (x2y2z2), при этом 0 ≤ x1 < x2 ≤ W, 0 ≤ y1 < y2 ≤ L, 0 ≤ z1 < z2 ≤ 109. Все числа во входном файле целые и разделяются пробелами или переводами строк.

Гарантируется, что места установки блоков не пересекаются друг с другом.

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

Первая строка выходного файла должна содержать либо слово «YES», если перекрытие возможно построить, иначе — слово «NO». В первом случае вторая строка выходного файла должна содержать минимальное число блоков, образующих перекрытие, а последующие строки — номера этих блоков, в соответствии с порядком, в котором они перечислены во входном файле.

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

Примечания

Решения, корректно работающие в случае, когда все числа во входном файле не превышают 100, будут оцениваться из 40 баллов.

Примеры
Входные данные
1 10 10
0 0 0 10 10 10
Выходные данные
YES
1
1 
Входные данные
2 10 10
0 0 0 10 5 5
0 5 5 10 10 10
Выходные данные
NO
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Как много открытий можно сделать, исследуя числа и составляющие их цифры!

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

Позже, когда Петя начал изучать информатику, те же исследования он стал проводить с натуральными числами в двоичной системе счисления. Например, двоичное число 1110­2 (в десятичной системе — 14) можно получить из числа 11002 (в десятичной системе — 12), прибавив к последнему сумму его цифр:

11002 + 102 = 11102.

Петя решил исследовать множество двоичных некрасивых чисел. Первые пять некрасивых чисел он нашел без труда: 1 = 12, 4 = 1002, 6 = 1102, 13 = 11012, 15 = 11112. Продолжить работу он собирается с помощью компьютера.

Требуется написать программу, которая определяет количество двоичных некрасивых чисел, не превосходящих заданного числа n.

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

В первой строке входного файла содержится число n, записанное в десятичной системе счисления (1   1018).

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

В единственной строке выходного файла должно содержаться единственное число — количество двоичных некрасивых чисел, не превосходящих n.

Примечание

Решения, корректно работающие при n ≤ 106, будут оцениваться из 40 баллов.

Примеры
Входные данные
17
Выходные данные
5
Входные данные
18
Выходные данные
6

Страница: << 46 47 48 49 50 51 52 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест