Страница: << 1 2 3 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Сережа очень любит математические задачи. Недавно на математическом кружке ему рассказали, что такое НОД и НОК.

НОД двух натуральных чисел \(a\) и \(b\) — это их наибольший общий делитель, то есть такое максимальное число \(x\), что \(a\) делится на \(x\) и \(b\) делится на \(x\). Например, НОД(24, 18) = 6. А НОК целых чисел \(a\) и \(b\) — это их наименьшее общее кратное, то есть такое минимальное число \(x\), что \(x\) делится на \(a\) и на \(b\). Например, НОК(24, 18) = 72.

Сережа сразу заметил, что может существовать несколько пар чисел с одинаковыми НОД и НОК. Теперь он заинтересовался вопросом: если заданы числа \(a\) и \(b\), насколько близко друг к другу могут быть два числа, у которых такие же НОД и НОК.

Помогите ему по заданным двум числам \(a\) и \(b\) найти такие числа \(x\) и \(y\), что \(НОД(a, \ b) \ = \ НОД(x, \ y), \ НОК(a, \ b) \ = \ НОК(x, \ y)\), а их разность \(y \ − \ x\) минимальна.

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

В первой строке входного файла находятся два натуральных числа \(a\) и \(b\) (\(1 \le a, \ b \le 10^9\) ).

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

Выведите два натуральных числа \(x\) и \(y\) (\(1 \le x \le y\)), таких, что \(НОД(a, \ b) \ = \ НОД(x, \ y), НОК(a, \ b) \ = \ НОК(x, \ y)\), а их разность \(y \ − \ x\) минимальна.

Примеры
Входные данные
3 4
Выходные данные
3 4
Входные данные
1 12
Выходные данные
3 4
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

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

Чтобы добиться этого, Мерлин решил действовать следующим образом. Он выбирает несколько сосудов и переливает весь эликсир из выбранных сосудов в оставшиеся. Он может распределить переливаемый эликсир между оставшимися сосудами произвольным образом. После того, как весь эликсир из выбранных сосудов перелит, Мерлин разбивает опустошенные сосуды (с них проклятие уже не снять), выбрасывает осколки и применяет заклинание снятия проклятия к оставшимся сосудам.

Помогите волшебнику узнать, какое наименьшее количество сосудов ему придется разбить, чтобы снять проклятие Морганы.

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

В первой строке входного файла находится число \(n\) (\(2 \le n \le 10^5\) ) — количество сосудов. Во второй строке содержатся \(n\) чисел \(a_1, \ a_2, \dots, a_n \ (1 \le a_i \le 10^9\) ) — количество литров эликсира мудрости в каждом сосуде.

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

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

Пояснения к примерам

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

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

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

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

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

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

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

  • для всех участников сначала написана фамилия, затем имя, а затем — отчество;
  • участники в таблице упорядочены лексикографически по фамилии.
Петя и Вася заметили, что фамилии у всех участников различны, а вот каждое имя встречается хотя бы два раза. При этом никакое имя не является ни фамилией, ни отчеством никакого из участников, аналогично никакие фамилия и отчество не совпадают.

Пользуясь этой информацией, помогите им привести таблицу к желаемому виду.

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

В первой строке задано число \(n\) (\(2 \le n \le 1000\)) — общее число записей в электронной таблице. Далее, в \(n\) строках записано по три слова \(s_{1,i}, \ s_{2,i}, \ s_{3,i}\). Каждое из слов содержит от 1 до 20 латинских букв, первая буква является заглавной, а все остальные — строчными. Каждая строка соответствует одной из записей, сделанных Петей или Васей. Слова разделены одним пробелом.

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

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

Лексикографический порядок соответствует порядку в словарях: слова сначала сравниваются по первой букве, затем по второй и т.д. Если очередная буква в одном из слов идет раньше в алфавите, то это слово лексикографически меньше другого. Если же расхождение так и не найдено, то есть одно из слов является префиксом другого, то считается, что слово, являющееся префиксом, лексикографически меньше.

Примеры
Входные данные
4
Ivanov Ivan Ivanovich
Ivan Borisovich Petrov
Sergey Ivanovich Sidorov
Pavlov Sergey Borisovich
Выходные данные
Ivanov Ivan Ivanovich
Pavlov Sergey Borisovich
Petrov Ivan Borisovich
Sidorov Sergey Ivanovich
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

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

При менее крутом повороте Петя волнуется меньше, а при более крутом — сильнее.
Будем считать, что волнение Пети в течении всего маршрута равно сумме величин в градусах углов, на которые ему придется повернуть в течении движения. Конечно, Петя хочет воспользоваться маршрутом, который заставит его волноваться как можно меньше.

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

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

В первой строке входного файла находится целое число \(n\) (\(1 \le n \le 50\)) — количество дорог в городе. В следующих \(n\) строках находится описание дорог.

Каждая дорога описывается четверкой целых чисел \(x_1, \ y_1, \ x_2, \ y_2\), которые задают координатами двух различных точек \((x_1, \ y_1)\) и \((x_2, \ y_2)\), через которые проходит дорога.

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

Координаты всех точек во входном файле являются целыми числами и не превосходят 100 по абсолютному значению.

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

В выходной файл выведите единственное число — суммарный угол в градусах, на который придется повернуть Пете при оптимальном выборе маршрута. Ответ считается правильным, если его относительная или абсолютная погрешность не превосходит \(10^{−9}\).

Если Петя никак не сможет добраться до дома Васи, выведите число −1.

Пояснения к примерам

Следующий рисунок соответствует первому примеру. Петя совершает два поворота на 135 градусов, его суммарное волнение равно 270.

Примеры
Входные данные
3
0 0 2 0
1 1 0 2
1 2 3 2
-3 0
3 2
Выходные данные
270.00000000000000000
Входные данные
1
0 0 2 0
0 0
2 0
Выходные данные
0.00000000000000000
Входные данные
5
0 0 1 0
0 0 1 1
0 0 0 1
0 0 -1 1
0 1 1 1
5 0
0 5
Выходные данные
90.00000000000000000
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Учительница математики очень не любит Колю и всегда заставляет его отвечать у доски самые сложные задачи.

Вот и сегодня она написала на доске последовательность из \(n\) целых неотрицательных чисел чисел \(a_1, \ a_2, \dots, \ a_n\) и вызвала Колю к доске. За одно действие учительница разрешает Коле стереть любое число и на его место записать число на единицу больше. Учительница требует от Коли за минимальное число действий добиться того, чтобы где-нибудь в этой последовательности встречались подряд в возрастающем порядке числа от \(1\) до \(h\).

Помогите Коле понять, за какое минимальное число действий ему удастся добиться того, что для некоторого \(i\) будет выполнено \(a_i \ = \ 1, a_{i \ + \ 1} \ = \ 2, \dots, \ a_{i \ + \ h \ − \ 1} \ = \ h\), или выясните, что это невозможно и учительница опять безнаказанно издевается над бедным Колей.

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

Первая строка входного файла содержит два натуральных числа: \(n\) и \(h\) (\(1 \le h \le n \le 200 000\)). Вторая строка содержит \(n\) чисел \(a_i\) — исходные значения элементов выписанной последовательности (\(0 \le a_i \le n\)).

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

В единственной строке выходного файла выведите минимальное количество действий, за которое Коля сможет выполнить задание, или −1 в случае, если выполнить его невозможно.

Пояснения к примерам

В первом примере Коле надо дважды увеличить на 1 третье число и один раз — четвертое. Тогда последовательность примет вид 1, 1, 2, 3, для \(i \ = \ 2\) выполнено искомое условие.

Во втором примере получить в последовательности подряд 1 и 2 невозможно.

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

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