Автор: | Лосевский Иван, Завгороднев Артем | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Некоторое число, являющееся результатом вычисления факториала из n, назовем числом x. Число x считается счастливым, если в его разложении на простые множители простое число k встречается не кратное 4 количество раз, а также более двух раз.
Разложение на простые множители - это представление числа в виде произведение простых множителей, из которых оно состоит. Например, число 120 раскладывается на 2 * 2 * 2 * 3 * 5.
Вам необходимо узнать, является ли x счастливым.
В первой строке находится целое число t - количество наборов входных данных. (1 ≤ t ≤ 104)
Далее для каждого набора входных данных в одной строке располагается два целых числа n и k. (2 ≤ n ≤ 106, 2 ≤ k ≤ n)
Для каждого набора входных данных в отдельной строке выведите “Yes”, если число оказалось счастливым, или “No” в противном случае.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Денис Лысенко | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
В большой IT компании сейчас ведется проект, который нужно закрыть в кратчайшие сроки. Для этого собрали большую команду IT специалистов, а именно:
Для того чтобы закрыть проект, нужно разработать, протестировать и развернуть на сервере N сервисов. Так как проект хорошо разбили на подзадачи, время, которое требуется для разработки, тестирования и развертывания, для всех сервисов одинаковое.
Нужно помнить, что каждый специалист может работать только с одним сервисов в один момент времени. А также, специалист не может перейти к работе над следующим сервисом, не закончив работу с текущим.
Чтобы не нарушать порядок разработки, сервис сначала нужно разработать, затем протестировать и только потом его можно начать развертывать.
Напишите программу, которая поможет большой IT компании, а именно найдет оптимальный порядок обработки сервисов и выведет минимальное для этого время.
В первой строке записано целое число N (1 ≤ N ≤ 105) - количество сервисов.
Во второй строке записано три целых числа m1, m2, m3 (1 ≤ m1,m2, m3 ≤ 1000) - количество разработчиков, тестировщиков и инженеров по развёртыванию.
В третьей строке записано три целых числа t1, t2, t3 (1 ≤ m1,m2, m3 ≤ 1000) - время, которое требуется на разработку, тестирование и развёртывание соответственно.
Выведите одно целое число — минимальное количество минут, за которое можно разработать, протестировать и развернуть все сервисы.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Александр Ильченко | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Отдыхая в баре с бесконечным числом математиков, у Вани родилась идея кодировки cwc7, не имеющей аналогов. В порыве вдохновения Ваня срочно закодировал все свои важные числа и довольным лёг спать. Однако на утро он обнаружил, что не может декодировать их обратно, поэтому очень ждёт вашей помощи!
Закодированный ряд представляет собой одно большое число x, не содержащее нолей. Чтобы вернуть исходный ряд нужно:
1. Разделить x на ряд чисел так, чтобы выполнялось условие xi − 1 < xi и xi было минимально возможным.
159→ 1, 5, 9
1555→ 1, 5, 55
Если в конце осталось число, меньше или равное, чем последнее добавленное, то это явно информационный шум и его нужно выбросить.
1232→ 1, 2, 3
2. К каждому числу xi из получившегося ряда применить формулу:
xi = axi mod 7,где a - это двузначное число, первая цифра которого - это первая цифра xi, а вторая цифра - последняя цифра xi.
В первой строке записано единственное положительное число x, которое не содержит нолей.
Через пробел выведите получившийся ряд чисел.
1 ≤ len(x) ≤ 170
Во втором примере число разделится как 6 41 53:
666 mod 7 = 1
4141 mod 7 = 6
5353 mod 7 = 2
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Артем Завгороднев | Ограничение времени: | 3 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
В некоторой школе для одаренных детей у ребят появился новый тренд - вставать в ряд по неубыванию роста, т.е так, чтобы рост следующего школьника в ряду был не меньше роста текущего. Однако быть самым низким не нравится никому, поэтому каждый из школьников говорит вам, что он не хочет стоять в последних ai местах (некоторые школьники не капризные вовсе и могут стоять на последнем месте).
Всего есть n школьников, которые приходят в ряд по очереди. Вам требуется после каждого нового школьника сказать, ряд какой максимальной длины можно составить из них.
В первой строке входных данных находится целое число n. (1 ≤ n ≤ 105)
В следующих n строках располагается пара из вещественного и целого чисел hi и ai - рост школьника в сантиметрах и количество последних мест, на которые он не будет вставать. Рост имеет 6 знаков после точки. (130 ≤ hi ≤ 190, 0 ≤ ai < n)
Вам требуется вывести n целых чисел: в i-ой строке максимальную длину ряда, который можно составить из первых i школьников. (1 ≤ i ≤ n)
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Артем Завгороднев | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
На выставке виртуальной реальности всем желающим дается возможность поиграть в VR-очках. Но так как участнику для игры нужно свободное пространство, то их расстановкой занимаются менеджеры. А также участник не может играть вечно, поэтому на игру ему отводится определенное время. Все хотят поиграть подольше, поэтому каждый участник будет стоять именно свои ti минут.
Другими словами, i-ый участник встает в точку (xi, yi), в которой он будет находиться ti минут. Менеджеры ответственно выполняют свою работу, поэтому они не отправят человека в занятую точку.
Вы, как администратор площадки, обязаны отчитываться сколько человек находится в некотором прямоугольнике. Вы не занимаетесь общением с людьми, поэтому вам приходят указания от менеджеров вида:
Прямоугольник описывается двумя точками (x1, y1) и (x2, y2), где x1 ≤ x2 и y1 ≤ x2. Точка (x, y) лежит на прямоугольнике, если (x1 ≤ x ≤ x2 и y1 ≤ y ≤ y2)
На выполнение каждого указания вы тратите T минут. Когда вам приходит указание посчитать людей, вы распечатываете для себя расстановку в текущий момент времени и считаете людей по ней. А время игры участника начинается сразу после того, как вы поставите его в точку.
В первой строке содержится два целых числа N и T - количество указаний и время, которое вы тратите на выполнение указания. (1 ≤ N, T ≤ 2 * 105)
В следующих N строках описываются указания, первое число строки говорит о том, какое указание в этой строке:
1 - поставить человека в точку. Далее в этой следует 3 целых числа xi, yi, ti. (1 ≤ xi, yi ≤ 500, 1 ≤ t ≤ 104)
2 - сказать сколько человек в прямоугольнике. Далее следует 4 целых числа: x1, y1, x2, y2. (1 ≤ x1, x2, y1, y2 ≤ 500)
Всего K запросов вида 2.
Вы должны вывести K натуральных чисел - ответы на запросы вида 2.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Завгороднев А.А., Бадерик М.М. | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
Существует фантастическое черное-красное дерево - граф, который представляет из себя дерево (связный граф без циклов), в котором каждая вершина покрашена в один из двух цветов - красный или черный.
У вас есть не менее замечательная строка s, состоящая из K символов ‘r' и 'b’. Ваша задача - выяснить сколько существует путей по дереву, таких, что если выписать цвета вершин, по которым вы прошлись, то получится строка s.
Путь - последовательность вершин, которая ведет из одной вершины в другую и проходит по ребрам графа. Одна вершина встречается в пути не более одного раза.
В первой строке целое число N- количество вершин в графе.
Далее строка g состоящая из N символов ‘r' и 'b’, описывающая цвета вершин дерева.
Далее строка s, состоящая из K символов ‘r' и 'b’.
В следующих строках два целых числа - ai и bi - начало и конец ребра.
2 ≤ K ≤ N ≤ 104
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Наталья Крючкова | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Алексей, опытный программист, всегда был настороже по отношению к банкам и предпочитал самостоятельно контролировать свои доходы. Но скучать ему не приходилось: он решил разнообразить свою жизнь и сосредоточиться на красоте своей заработной платы.
Красивой зарплатой он называл ту, которая была задана простым числом и являлась палиндромом. Теперь Алексей хочет посчитать только такие зарплаты за последнее время. Помогите ему справится с этим.
Первая строка входных данных содержит целое число n - количество зарплат Алексея.
Следующие n строк содержат целое число k зарплату Алексея за месяц в пуплях.
Выведите единственное число - сумму только красивой зарплаты Алексея за n месяцев. Гарантируется, что сумма всех зарплат Алексея не превышает 109 пуплей.
1 ≤ n ≤ 1000
1 ≤ k ≤ 106
Палиндром - число, одинаково читающееся в обоих направлениях.
Простое число - натуральное число, имеющее ровно два различных натуральных делителя.
Пример:
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Артем Завгороднев | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
У вас есть друг Петя, которому вы дали k рублей и отправили его в магазин купить круп, чтобы приготовить ужин. Вы сказали ему сколько и чего купить, но у него, конечно же, сразу всё вылетело из головы. Однако Петя - человек гордый, поэтому звонить и переспрашивать не будет. Он поступит нерассудительно - купит крупы наугад.
В магазине все крупы продаются только пакетами по 1кг и стоят одинаково.
Вы знаете об этой особенности Пети, и хотите рассчитать вероятность, что он купит именно то, что вы и попросили. Но для этого надо рассчитать сколько различных покупок может сделать Петя.
Две покупки являются различными, если существует такая крупа, что ее количество в первой покупке отличается от количества во второй покупке.
Петя отличается силой, в отличие от памяти, поэтому он может унести сколько угодно килограмм.
Петя может как купить на все деньги крупы одного вида, так и не купить круп вовсе (прийти в магазин просто так).
Во входной строке три целый числа: n, k и m - количество видов круп, количество денег у Пети и стоимость одного килограмма. (1 ≤ n ≤ 105, 1 ≤ m ≤ k ≤ 105)
Выведите одно целое число - количество различных покупок, которые может сделать Петя.
Так как ответ может оказаться слишком большим, выведете его по модулю 109 + 7
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Завгороднев А.А., Бадерик М.М. | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 1024 Мб | |
Выходной файл: | Стандартный выход |
Миша и Паша играют в игру со словами. Игра достаточно трудная и правила у нее замудренные. Миша называет слово длины n, а Паша должен выбрать из раннее сказанных слов наиболее непохожее на только что сказанное.
Слова состоят из строчных латинских букв.
“Непохожесть“ слова а на слово b определяется по следующей формуле:
oversetn∑i = 1((ai − bi) ⋅ 100i − 1, если ai ≥ bi)
oversetn∑i = 1((bi − ai + 50) ⋅ 100i − 1, если ai < bi)
Где i - индекс буквы, ai, bi - алфавитные номера букв в словах на i-ом месте.
В нашем случае a - одно из раннее сказанных слов, b - только что сказанное слово.
В первый раунд Паше отвечать не нужно.
Непохожесть слова code на слово work вычисляется следующим образом:
порядок букв в алфавите:
с − 3, o − 15, d − 4, e − 5
w − 23, o − 15, r − 18, k − 11
(23 − 3 + 50)1000 + (15 − 15)1001 + (18 − 4 + 50)1002 + (11 − 5 + 50)1003 = 56640070
В первой строке располагается два целых числа n и k - длина слова и количество ходов в игре.
В следующих k строках располагаются строки длины n - слова, которые говорит Миша.
Вам необходимо вывести k − 1 слов - ответы Паши.
1 ≤ n ≤ 6000 1 ≤ k ≤ 300
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Артем Завгороднев | Ограничение времени: | 1 сек | |
Ввод / вывод: | интерактивный | Ограничение памяти: | 256 Мб |
Это интерактивная задача. Параллельно с выполнением вашего решения жюри запускает проверяющую программу, с которой вы обмениваетесь сообщениями через стандартный ввод и вывод. Подробнее о протоколе взаимодействия написано ниже. Также в конце условия вы можете посмотреть корректные примеры взаимодействия с проверяющей программой на разных языках программирования.
Вы попали в странный мир, и у вас на руках оказалось n рун со странным знаками на них. Вы видите перед собой неработающий нефритовый портал, в котором есть k ячеек.
Немножко поигравшись, вы заметили, что у рун есть своя энергия, и если попытаться засунуть руну в ячейку, то появится вспышка разных цветов:
Вы догадываетесь, что вам надо расположить руны по ячейкам в соответствии с их энергией. То есть в одной ячейке должны быть только руны одинаковой энергии.
Чтобы в ячейках не было рун разной энергии, когда вы видите синюю или красную вспышку, вы кладете только что добавленную руну обратно (К себе в карман или в ее прежнюю ячейку, в зависимости от того, где она была до этого). Неправильное расставление и возврат руны назад считаются за одну попытку.
Вам необходимо все руны раскидать по ячейкам. Гарантируется, что такое расположение рун существует. Времени у вас мало, поэтому вы можете сделать не более 15 * n попыток расставления.
При запуске решения на вход в первой строке подаются два целых числа k и n - количество ячеек в портале и количество рун.
Вы можете делать запросы посредством вывода «? i j», где i,j - номер руны и номер ячейки, в которую вы собираетесь положить эту руну соответственно.
Ответом будет выведена одна из строчек «White», «Blue», «Green» или «Red» в зависимости от рун в ячейке.
Вы можете сделать не более 15 * n запросов. Вывод ответа не считается за запрос.
Вы можете вывести ответ, выведя «!», если считаете, что расположили все руны по их энергии.
Каждый вопрос и вывод ответа должен заканчиваться символом перевода строки \n, а также необходимо выполнить сброс буфера:
Язык | C++ | Pascal | Java | Python |
Сброс буфера | cout.flush() | flush(output) | System.out.flush() | stdout.flush() |
1 ≤ k < n ≤ 1000
Энергия рун в данном примере была следующая: a3 a2 a2 a1, где a3 > a2 > a1
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Завгороднев А.А. | Ограничение времени: | 4 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
У вас есть квадратная матрица A размера n × n.
Также у вас есть k матриц Bk тоже размера n × n.
От вас требуется найти такие две матрицы, произведение которых даст матрицу A (если таких матриц не существует, выведите -1). Эти матрицы должны иметь различные индексы.
Матрицы перемножаются по принципу строка на столбец. Результат кладётся в клетку их пересечения.
Рассмотрим это на примере матриц: A2 × 2 = [a11 a12a21 a22] и B2 × 2 = [b11 b12b21 b22]. A × B = C.
C2 × 2 = [a11 * b11 + a12 * b21 a11 * b21 + a12 * b22a21 * b11 + a22 * b21 a21 * b21 + a22 * b22].
Общая формула выглядит так: cij = ai1 b1j + ... + ain bnj.
В первой строке находятся два целых числа k и n - количество матриц и их размер.
В следующих строках описываются матрицы Bk. Матрицы разделены пустыми строкам. Каждая строка матрицы располагается в новой строке. Элементы матрицы в строке разделены пробелами.
Далее описывается матрица A.
Элементы матриц - целые числа.
Выведите -1, если не нашлась подходящая пара матриц.
Или два различных индекса найденных матриц в порядке возрастания в ином случае.
2 ≤ k ≤ 30
2 ≤ n ≤ 100
− 103 ≤ bk ≤ 103
− 109 ≤ ak ≤ 109
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Денис Лысенко | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход |
Денис посетил вечеринку спортивных программистов в Точке кипения, где участники обсуждали различные алгоритмы. В ходе обсуждения возник спор о задачах на BFS. Одни считали их интересными, другие - душными. Через какой-то время спор почти дошел до драки между участниками, после чего любители задач на BFS назвали своих противников “токсиками” и решили закрыть их в Точке кипения. В свою очередь Точка кипения представляет собой лабиринт.
Точка кипения представлена матрицей размерностью n×m. Она может содержать следующие символы:
Любители BFS хотят заблокировать противников, а именно заменить некоторые пустые клетки на стены так, чтобы все любители BFS смогли добраться до выхода, а все токсики остались заперты в Точке кипения.
Клетки, которые изначально содержат символы 'S' или 'T', не могут быть заблокированы, но через них можно проходить.
Помогите Денису определить, можно ли заблокировать некоторые пустые клетки в Точке кипения так, чтобы ВСЕ любители BFS смогли выйти, но при этом токсики бы не смогли. Люди могут передвигаться на соседние клетки в Точке кипения по вертикали и по горизонтали. Учтите, что разрешается не блокировать клетки вовсе и блокировать выход из точки кипения. Гарантируется, что выход из лабиринта всегда представляет собой пустую клетку.
Первая строка содержит одно целое число t (1 ≤ t ≤ 1000) - количество наборов входных данных.
Для каждого набора входных данных:
Для каждого набора входных данных выведите "YES" или "NO", в зависимости от того, можно ли заменить некоторые пустые клетки на стены, чтобы удовлетворить описанным ограничениям.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|