В одном из цехов N-ского машиностроительного завода выпускаются детали. В целях контроля качества, вес каждой детали должен контролироваться, для чего существует контрольный пост. К сожалению, контролер на этом посту довольно ленив, и вместо того чтобы отдельно взвешивать каждую деталь, он решил немного «оптимизировать» процесс.
В конце рабочего дня, на проверку поступает ящик с множеством однотипных деталей. Контролер знает, что качественная деталь должна весить целое количество грамм, но слишком ленив чтобы заглянуть в документы и узнать сколько именно. Также, все однотипные детали должны весить одинаково.
«Оптимизированный» процесс контроля заключается в следующем:
Вашей задачей будет написать программу, которая по журналу взвешиваний определит, получит ли партия знак качества или окажется забракованной.
Первая строка входного файла содержит целое число $$$k$$$ $$$(1 \le k \le 1000)$$$. Далее следуют $$$k$$$ строк, на каждой из которых записаны целые числа $$$a_i$$$ $$$(0 \lt a_i \le 1000)$$$ и $$$w_i$$$ $$$(0 \lt w_i \lt 1000000)$$$, разделенные пробелом.
Выходная строка должна содержать слово «DEFECT» если в партии точно есть бракованные детали, или «QUALITY», если признаков брака не обнаружено.
3
10 30
5 15
2 6
QUALITY
2
2 5
4 10
DEFECT
Участник должен выводить «QUALITY» в том случае, если нет однозначных признаков брака, даже если для однозначного вывода о качественности деталей не хватает данных.
В уездном американском городе чрезвычайная ситуация. По городу разбежались гремлины и остальному миру угрожает опасность, так как как минимум один из них покинул город. Специальные службы восстанавливают картину событий и пытаются обнаружить самый ранний момент, когда это могло случиться.
Город представлен в виде квадратной клетчатой доски размера $$$N\times N$$$. Каждая клетка представляет один дом. Гремлины боятся яркого света и поэтому прячутся в темноте. Далее, по мере того как люди ложатся спать, свет в домах гаснет. Гремлины могут перемещаться по горизонтали и по вертикали от одного дома, где не горит свет, к другому. Как только они достигают дома, который находится на границе города, они сбегают из города.
У вас есть достоверные данные о том в каких домах гремлины находились в начале, а также история выключения света в домах. Вам надо вывести порядковый номер дома в истории, после выключения света в котором хотя бы один гремлин может сбежать из города. Если гремлины сразу же могут сбежать из города, вывести 0. Нумерация домов в истории начинается с единицы.
В первой строке через пробел вводятся три целых числа $$$1 \lt N \lt =500$$$, $$$1 \lt =M \lt =N^2$$$, $$$1 \lt =K \lt =N^2$$$, где $$$N$$$ определяет размер города, $$$M$$$ - количество домов, в которых в самом начале находятся гремлины, $$$K$$$ - размер истории выключений света в домах.
Далее следуют $$$M$$$ строк, каждая из которых содержит пару чисел $$$0 \lt =x_i,y_i \lt N$$$, задающих координаты домов, где находятся гремлины в начале.
После этого следуют $$$K$$$ строк, каждая из которых содержит пару чисел $$$0 \lt =x_j,y_j \lt N$$$, задающих координаты домов, в которых выключается свет.
Единственное число от $$$0$$$ до $$$K$$$, которое задает номер дома, после выключения света в котором хотя бы один гремлин имел возможность сбежать из города.
3 1 3
1 1
0 0
0 1
0 2
2
5 2 5
0 1
4 1
0 0
1 1
2 2
3 3
4 4
0
4 2 3
1 1
1 2
2 0
3 1
1 3
3
5 2 6
1 1
3 3
1 2
1 3
2 3
3 0
3 1
2 1
6
7 6 7
1 4
1 1
2 3
3 1
4 4
5 2
0 4
2 4
3 4
1 0
2 1
5 1
5 0
1
Входные данные гарантируют, что побег мог быть совершен.
При выполнении различных физических расчетов часто приходится иметь дело не только с числами, но и с размерностями величин. При этом размерности могут получаться весьма сложными и их требуется сокращать: например, размерность кг/(кг/м/с) это просто м/с.
Напишите программу, которая максимально сократит размерность и запишет все встречающиеся величины слева направо в алфавитном порядке (если размерность является дробью, то в алфавитном порядке записываются отдельно числитель и знаменатель).
Первая строка входного файла содержит единственную строку символов — размерность, подлежащую сокращению.
Размерности величин обозначаются латинскими строчными и заглавными буквами.
Кроме латинских букв в выражении могут присутствовать знаки умножения «*», деления «/» и круглых скобок. Степени величин выражаются кратным повторением величины. Порядок выполнения операций соответствует общепринятому. Величины, отличающиеся регистром букв считаются различными.
Длина сокращаемой размерности не превосходит 1000 символов.
Выходные данные содержат сокращенную размерность. Первая строка содержит числитель размерности, вторая — знаменатель. Допустимо в виде числителя и/или знаменателя указывать единицу.
kg/(kg/(m/s))
m
s
kg*a/(Fs*B)*A*Kt
A*a*Kt*kg
B*Fs
Сортировка в алфавитном порядке подразумевает следующий порядок букв: «AaBbCbDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz». Более короткие строки стоят раньше более длинных.
Как известно апельсины состоят из долек, и их довольно удобно делить на несколько человек. Очевидно, что сколько бы ни было долек в апельсине его всегда можно съесть в одиночку, или поделить не компанию в которой столько же людей, сколько долек в самом апельсине.
Если дольки апельсина можно поровну разделить среди $$$n$$$ человек, то скажем что он подходит для такой компании. А какое минимальное количество долек $$$m$$$ должно быть в апельсине, чтобы он подходил $$$k$$$ различным компаниям (компании считаются различными, если они состоят из разного числа человек)?
Напишите программу, которая по числу компаний $$$k$$$ найдет минимальное число долек апельсина, подходящее ровно $$$k$$$ различным компаниям, или сообщит, что такого числа не существует.
Входной файл содержит единственное целое число $$$k$$$ $$$(1 \le k \le 1000)$$$.
Выходной файл содержит единственное целое число $$$m$$$, или $$$-1$$$ если такого числа не существует.
4
6
1
1
Апелисин из 6 долек можно поровну разедить на 1, 2, 3 или 6 человек.
Стало доброй традицией на соревнованиях по программированию решать задачу про Ханойскую башню.
Кратко напомним правила этой игры-головоломки.
Имеются три стержня: $$$A$$$, $$$B$$$, $$$C$$$. Первоначально на исходном стержне $$$A$$$ размещены $$$N$$$ дисков различного диаметра: самый маленький диск наверху, и далее – по возрастанию диаметра. Второй и третий стержни пока пусты.
Требуется переместить все диски с исходного стержня $$$A$$$ на результирующий стержень $$$B$$$, используя третий стержень $$$C$$$ как вспомогательный. За один ход разрешается взять один (обязательно верхний) диск и надеть его на другой стержень, возможно пустой. Причем, диск большего диаметра запрещается класть на диск меньшего размера. Во многих учебниках по программированию приводится процедура решения этой головоломки.
Procedure Hanoi (X, Y, Z: char; N: integer);
Begin
If N>0 then
Begin
Hanoi (X, Z, Y, N-1);
Writeln('Disk ', N, ' from ', X, ' to ', Y);
Hanoi (Z, Y, X, N-1)
End
End;
Доцент П. из города Р., готовясь к чемпионату по программированию, решил размяться и принялся вручную перекладывать диски Ханойской башни. (Для этого он использовал кольца от детской пирамидки и три стержня, отобранные у внучки.)
В какой-то момент внучка, обидевшись на деда, отобрала часть колец, не тронув только исходный стержень с нанизанными дисками-кольцами.
Помогите доценту и рассчитайте, какое минимально возможное число ходов он успел сделать, если известно текущее расположение дисков на исходном стержне.
Перекладывания дисков выполняются по стандартному алгоритму, описанному в процедуре выше. Комбинация дисков, заданная во входном файле, гарантированно достижима.
В первой строке записано одно целое число $$$N$$$ – исходное количество дисков ($$$1\leq N\leq 100$$$). Во второй строке файла заданы $$$N$$$ символов '0' и '1'. Символ в $$$i$$$-й позиции означает, присутствует (задается знаком '1') или нет (задается знаком '0') диск с номером $$$i$$$ на исходном стержне в момент прерывания игры.
Выходной файл должен содержать одно целое число в двоичном виде без ведущих нулей – минимальный из возможных номеров ходов, после выполнения которого диски на исходном стержне размещены заданным образом.
3
111
0
3
001
10
5
00000
10000
На экзамене по информатике Вася решал следующую задачу:
«Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу $$$a$$$ каменей или увеличить количество камней в куче в два раза. Например, если $$$a = 2$$$, имея кучу из $$$10$$$ камней, за один ход можно получить кучу из $$$12$$$ или $$$20$$$ камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завершается в тот момент, когда количество камней в куче становится не менее $$$n$$$. Проигравшим считается игрок, сделавший последний ход, то есть получивший кучу, в которой будет $$$n$$$ или больше камней. В начальный момент в куче было $$$s$$$ камней. Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.»
К сожалению Вася не помнит значения $$$a$$$ и $$$n$$$, которые были на экзамене, но помнит при каких начальных $$$s$$$ выигрывали Петя или Ваня. Также он помнит что $$$a$$$, $$$n$$$ и $$$s$$$ не превосходили $$$10^3$$$. Напишите программу, которая по различным значениям $$$s$$$ и информации о выигрышах для этих $$$s$$$ найдет минимальные подходящие $$$a$$$ и $$$n$$$.
Первая строка входного файла содержит число $$$k$$$ — количество позиций $$$(1 \le k \le 1000)$$$, для которых Вася помнит исходы.
Далее следуют $$$k$$$ строк, каждая из которых содержит два целых числа. Первое из этих чисел — начальное количество камней $$$s_i$$$ $$$(0 \lt s_i \le 1000)$$$, второе равно $$$1$$$ если при количестве камней $$$s_i$$$ выигрывает Петя, или $$$2$$$ если при этом количестве камней выигрывает Ваня. Все начальные позиции $$$s_i$$$ различны.
Выходной файл должен содержать два целых числа $$$n$$$ и $$$a$$$, разделенных пробелом $$$(0 \lt n, a \le 1000)$$$.
Если задача допускает несколько решений то должно быть выведено решение с минимальным $$$n$$$, если для минимального $$$n$$$ существует несколько решений, то должно быть выведено решение с минимальными $$$n$$$ и $$$a$$$.
Если решения в заданных ограничениях не существует то должны быть выведены два нуля.
4
1 2
2 1
3 1
4 2
5 1
2
1 2
2 2
0 0
Для генерации псевдослучайных чисел используют различные методы. Одним из таких методов является использование булевых рекуррентных выражений. В таком случае, псевдослучайное число представляется в виде битовой последовательности, такой что каждый следующий бит вычисляется из предыдущих по некоторой формуле. Однако такое задание фактически определяет последовательность по первым ее членам.
Альтернативой может служить использование булевых уравнений. Будем говорить, что битовая последовательность x1, x2, x3, …, xn удовлетворяет некоторому уравнению
Первая строка входного файла содержит целое число n (2 ≤ n ≤ 103). Вторая строка содержит левую часть уравнения, закодированного следующим способом:
Длина левой части уравнения не превосходит 1000 символов.
Выходной файл содержит единственное число — количество битовых последовательностей длинны n удовлетворяющих уравнению. Число должно быть выведено по модулю 260.
3
(0+2)|(0&2)
6
4
(0+2)|-(0&2)
9
Первый пример кодирует уравнение (xi + xi - 2)|(xi&xi - 2) = 1, которому удовлетворяют следующие последовательности: 001, 011, 100, 101, 110, 111. Второй пример кодирует уравнение (xi + xi - 2)|( - (xi&xi - 2)) = 1, которому удовлетворяют последовательности: 0000, 0001, 0010, 0011, 0100, 0110, 1000, 1001, 1100.
Назовем последовательность $$$a_0$$$, $$$a_1$$$, $$$a_2$$$, … $$$a_{k-1}$$$ «самоописывающейся», если значение $$$a_i$$$ — это количество чисел $$$i$$$, встречающихся в этой последовательности.
Например, такова последовательность 1, 2, 1, 0 — «0» встречается 1 раз, «1» встречается 2 раза, «2» встречается 1 раз и «3» вообще не встречается.
Вашей задачей, будет написание программы, которая по заданной длине последовательности $$$k$$$, выведет ее элементы с указанными индексами, либо сообщит что такой последовательности не существует. Если таких последовательностей несколько, то правильной считается любая из них.
Первая строка входного файла содержит длину последовательности $$$k$$$ $$$(1~\le~k~\le~2^{30})$$$. Вторая строка входного файла содержит число $$$n$$$ $$$(0~ \lt ~n~\le~10^5)$$$ — количество искомых элементов последовательности. Третья строка строка содержит $$$n$$$ целых чисел $$$r_1$$$ $$$r_2$$$ $$$r_3$$$ … $$$r_n$$$ $$$(0~\le~n_i~ \lt ~k)$$$, разделенных пробелами — индексы тех элементов последовательности, которые нужно вывести.
Первая строка выходного файла содержит 0 если «самоописывающейся» последовательности длины $$$k$$$ не существует. В противном случае в первой строке указывается число $$$n$$$, далее, во второй строке выходного файла, следуют $$$n$$$ чисел, разделенным пробелами — элементы последовательности с индексами указанными во входном файле в порядке появления этих индексов.
4
4
0 1 2 3
4
1 2 1 0
4
4
3 2 1 0
4
0 1 2 1
1
1
0
0
5
3
4 4 4
3
0 0 0
Существует множество вариантов игры в крестики и нолики. Рассмотрим одну из них.
На клетчатой квадратной доске расставлено некоторое количество крестиков и ноликов, а также оставлены пустые клетки. Игрок должен заполнить пустые клетки так, чтобы ни крестики ни нолики не образовали линии более чем из трех одинаковых значков подряд. Линии учитываются по горизонтали, вертикали или любой диагонали.
Вашей задачей будет написать программу, которая по заданному начальному полю заполнит все пустые клетки крестиками и ноликами по описанным выше правилам. Если таких расстановок несколько, то правильной будет считаться любая из них.
Гарантируется, что для входных данных, существует хотя бы одно правильное решение.
Первая строка входного файла содержит число $$$n$$$ — размер доски $$$(3 \lt n \le 20)$$$. Далее следуют $$$n$$$ строк по $$$n$$$ символов в каждой — начальное состояние игрового поля. Крестик обозначается знаком «+» (плюс), нолик — символом «0» (нуль), пустое поле — символом «.» (точка).
Формат выходных идентичен формату входных данных (включая размер доски). Решение не должно содержать пустых полей.
4
0.0.
00+0
0+00
++..
4
0+00
00+0
0+00
++0+
У вас есть две строки, состоящие из строчных латинских букв: шаблон $$$p$$$ и текст $$$t$$$. Кроме того шаблон может содержать символ $$$+$$$, который означает повторение предшествующего ему символа один или более раз, и символ $$$*$$$, означающий повторение предшествующего ему символа любое количество раз.
Вам необходимо ответить на вопрос - соответствует ли текст $$$t$$$ шаблону $$$p$$$.
Например, текст"eboooy" соответствует шаблонам "ebo+y", "ebo*o*o+y+", но не соответствует "ebb*oy" или "ebooo".
Первая строка содержит шаблон $$$p$$$, а вторая текст $$$t$$$. Обе строки не пусты и содержат не более $$$1000$$$ символов. Гарантируется, что $$$p$$$ задает допустимый шаблон, то есть не содержит двух подряд идущих символов $$$+$$$ и $$$*$$$ и первым символом $$$p$$$ является строчная латинская буква.
Выведете Yes если текст соответствует шаблону и No в противном случае.
pa*t+ern
pattern
Yes
c*cp+p
cpp
Yes
b+b
b
No
Вдоль большого мезонного коллайдера установлены 4 искровые камеры, следящие за взаимодействиями двигающихся по кругу с большими скоростями мезонов.
Чтобы получать достоверные синхронизированные данные с искровых камер и быстро их обрабатывать, внутри круга требуется разместить 2 компьютера, соединить их кабелем друг с другом, а также с искровыми камерами. Каждая камера должна быть соединена хотя бы с одним компьютером. Для максимальной синхронизации поставлена задача минимизации общей длины используемого кабеля.
Напишите программу, которая по известному расположению искровых камер рассчитывает длину кабеля.
Первая строка содержит пять целых чисел, разделенных пробелами: R – радиус окружности, по которой двигаются мезоны ($$$1 \leq R\leq 100$$$), $$$g_1$$$, $$$g_2$$$, $$$g_3$$$, $$$g_4$$$– углы, под которыми из центра окружности видны искровые камеры ($$$60^\circ \leq g_i \leq 360^\circ$$$).
Выведите одно вещественное число — минимальную общую длину необходимого кабеля. Ваш ответ будет засчитан, если абсолютная или относительная погрешность вашего ответа не превышает $$$10^{-6}$$$.
Формально, пусть ваш ответ равен $$$a$$$, а ответ жюри равен $$$b$$$. Ваш ответ будет зачтен, если $$$\frac{|a-b|}{\max(1, |b|)} \leq 10^{-6}$$$.
10 60 120 60 120
34.64101615
Иллюстрация для теста