Информатика

15 732 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен). 
Необходимо определить количество пар, сумма которых кратна 3, а произведение кратно 5. На вход алгоритма подается число N и далее сами N чисел.

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

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

 

Примеры
Входные данные Выходные данные
1 10
1
2
3
4
5
6
7
8
9
10
6
Найденные пары для примера: {(1;5) (2;10) (4;5) (5;7) (5;10) (8;10)}
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [102438; 124698] числа, у которых ровно 7 различных натуральных делителей, не считая 1 и самого числа. Для каждого найденного числа выведите эти 7 делителей с новой строки в порядке возрастания произведения этих 7 делителей. Делители должны следовать в порядке возрастания.
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [108933; 132757] числа, у которых ровно 2 различных натуральных делителя, не считая 1 и самого числа. Для каждого найденного числа выведите эти 2 делителя с новой строки в порядке возрастания произведения этих 2 делителей. Делители должны следовать в порядке возрастания.
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [289039; 311993] числа,  у которых ровно 8 различных натуральных делителей, не считая 1 и самого числа. Для каждого найденного числа выведите эти 8 делителей с новой строки в порядке возрастания суммы этих 8 делителей. Делители должны следовать в порядке возрастания.
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [114059; 137640] числа, у которых ровно 7 различных натуральных делителей, не считая 1 и самого числа. Для каждого найденного числа выведите эти 7 делителей с новой строки в порядке возрастания суммы этих 7 делителей. Делители должны следовать в порядке возрастания.
Строка s называется супрефиксом для строки t, если t начинается с s и заканчивается на s. Например, «abra» является супрефиксом для строки «abracadabra». В частности, сама строка t является своим супрефиксом. Супрефиксы играют важную роль в различных алгоритмах на строках.
 
В этой задаче требуется решить обратную задачу о поиске супрефикса, которая заключается в следующем. Задан словарь, содержащий n слов t1, t2, …, tn и набор из m строк-образцов s1, s2, …, sm. Необходимо для каждой строки-образца из заданного набора найти количество слов в словаре, для которых эта строка-образец является супрефиксом.
 
Требуется написать программу, которая по заданному числу n, n словам словаря t1, t2, …, tn, заданному числу m и m строкам-образцам s1, s2, …, sm вычислит для каждой строки-образца количество слов из словаря, для которых эта строка-образец является супрефиксом.
 
Входные данные
Первая строка входного файла содержит целое число n (1 ≤ n ≤ 200 000).
 
Последующие n строк содержат слова t1, t2, …, tn, по одному слову в каждой строке. Каждое слово состоит из строчных букв латинского алфавита. Длина каждого слова не превышает 50. Суммарная длина всех слов не превышает 106. Словарь не содержит пустых слов.
 
Затем следует строка, содержащая целое число m (1 ≤ m ≤ 200 000).
 
Последующие m строк содержат строки-образцы s1, s2, …, sm, по одной на каждой строке. Каждая строка-образец состоит из строчных букв латинского алфавита: Длина каждой строки-образца не превышает 50. Суммарная длина всех строк-образцов не превышает 106. Никакая строка-образец не является пустой строкой.
 
Выходные данные
Выходной файл должен содержать m чисел, по одному на строке.
 
Для каждой строки-образца в порядке, в котором они заданы во входном файле, следует вывести количество слов словаря, для которых она является супрефиксом.

Ввод Вывод
4
abacaba
abracadabra
aa
abra
3
a
abra
abac
4
2
0

✓ 3✗ 41 000средняяВойти и решать

В теории кодирования часто используют беспрефиксные коды наборы слов, ни одно из которых не является префиксом. Слово α называется префиксом слова β, если α получается из β удалением нуля или более символов в конце. Например, слова a, ab и aba являются префиксами слова aba. Например, набор слов aba, aa и bac является беспрефиксным кодом, а набор abac, aba, ba нет, поскольку слово aba является префиксом слова abac.

 Профессор Дешифро работает в лаборатории исследования бесполезной информации и изучает свое новое изобретение почти беспрефиксные коды. Набор слов называется почти беспрефиксным кодом уровня k, если наибольший общий префикс двух любых слов из набора не превышает по длине k. Например, набор abac, abс, ba является почти беспрефиксным кодом уровня 2, а набор abac, abab, ba нет, поскольку наибольший общий префикс слов abac и abab имеет длину 3.

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

 
Входные данные
Первая строка входного файла содержит два целых числа: n и k количество слов в заданном наборе и уровень почти беспрефиксного кода, который требуется построить (\(1<= n <= 100000\), \(0 <= k <= 200\)). Следующие n строк содержат по одному слову. Слова состоят из строчных букв латинского алфавита. Длина каждого слова от 1 до 200 символов. Суммарная длина всех слов не превышает \(10^6\). Все слова различны.
 
Выходные данные
Выведите одно число m - максимальное количество слов, которые можно выбрать из заданного набора, чтобы они образовывали почти беспрефиксный код уровня k

 

Примеры
Входные данные Выходные данные
1
6 2
aba
bacaba
abacaba
baca
abac
caba
3
Мальчик Кирилл написал однажды на листе бумаги строчку, состоящую из больших и маленьких латинских букв, а после этого ушел играть в футбол. Когда он вернулся, то обнаружил, что его друг Дима написал под его строкой еще одну строчку такой же длины. Дима утверждает, что свою строчку он получил циклическим сдвигом строки Кирилла на несколько шагов вправо (циклический сдвиг строки abcde на 2 позиции вправо даст строку deabc).
Однако Дима известен тем, что может случайно ошибиться в большом количестве вычислений, поэтому Кирилл в растерянности – верить ли Диме? Помогите ему! По данным строкам выведите минимальный возможный размер сдвига или -1, если Дима ошибся.
 
Входные данные
Первые две строки входных данных содержат строки Кирилла и Димы, соответственно. Длины строк одинаковы, не превышают 10000 и не равны 0.
 
Выходные данные
Выведите единственное число – ответ  на вопрос задачи.
 

 

Примеры
Входные данные Выходные данные
1
zabcd
abcdz
4
Двое играют в игру. Есть несколько кучек спичек. За один ход разрешается взять любое ненулевое количество спичек из любой кучки, кто не может сделать ход, тот проиграл. Определите, кто выигрывает при правильной игре.
 
Входные данные
В первой строке входного файла записано натуральное число N — количество кучек. Во второй строке записаны N целых чисел — количество спичек в кучках. Все числа во входном файле не превосходят 100000.
 
Выходные данные
Выведите «1», если выигрывает первый игрок или «2», если выигрывает второй игрок. Если выигрывает первый игрок, во второй строке выведите число K — общее количество выигрышных ходов. В последующие K строк выведите информацию о выигрышных ходах — пары чисел, перечисленные в порядке возрастания первой координаты, а при равенстве в порядке возрастания второй координаты. В каждой такой паре первое число должно обозначать номер кучки, а второе — количество спичек, которые необходимо взять из этой кучки.

Ввод Вывод
1
10
1
1
1 10
2
1 1
2

✓ 19✗ 361 000средняяВойти и решать
Двое играют в игру. Есть несколько кучек спичек. За один ход разрешается взять любое ненулевое количество спичек из любой кучки, кто не может сделать ход, тот проиграл. Определите, кто выигрывает при правильной игре.
 
Формат входных данных
В первой строке входного файла записано натуральное число N — количество кучек. Во второй строке записаны N целых чисел — количество спичек в кучках. Все числа во входном файле не превосходят 100000.
 
Формат выходных данных
Выведите «1», если выигрывает первый игрок или «2», если выигрывает второй игрок.
Петя получил золотую медаль на IOI, за что от правительства ему положена благодарность в виде шоколадки. На данный момент имеется N видов шоколадок, которые производит государственная шоколадная фабрика. У каждой шоколадки есть стоимость. Кроме того, у каждого вида, кроме шоколадки "Юлька", есть вид-прародитель. Известно, что прародителем может быть только шоколадка, которая была выпушена хронологически раньше. Исторически самый первый вид - "Юлька". Чиновник и Петя выбирают шоколадку ему в подарок. При этом цель первого - сэкономить, второго - получить настолько дорогую шоколадку, насколько это возможно. Начинается выбор с "Юльки". Петя за ход либо берет текущую шоколадку, либо меняет свой выбор на шоколадку-потомка (если это возможно). Чиновнику же кажется, что позже выпущенные виды хуже и дешевле, поэтому он меняет выбор на шоколадку-потомка (если это возможно), либо покупает Пете шоколадку (если потомков нет). Они ходят по очереди, Петя - первый. Определите, на шоколадку какой стоимости может претендовать Петя.
 
Входные данные
Сначала вводится число 0 < N <= 200000 - количество видов. "Юлька" имеет номер 1. Далее идут N строк с парами чисел 0 <= Pi <= N - номер сорта-предка (для шоколадки "Юлька" указан 0, у остальных Pi > 0) и 0 < Ci <= 1000000000 - стоимость i-го сорта.
 
Выходные данные
Выведите стоимость шоколадки, которую Петя может себе гарантировать при правильных действиях.

Ввод Вывод
8
0 4
5 3
1 2
5 1
1 5
4 8
3 6
3 7
6

Напомним содержание первой серии. Двое играют в такую игру: перед ними лежит шоколадка размера NxM. За ход можно разломить имеющийся кусок шоколадки вдоль одной из сторон на 2 "непустых".
 
Однако, нельзя разламывать куски размером не больше, чем 1k (куски можно поворачивать; мы считаем, что один кусок "не больше" другого, если он равен ему или его части). Таким образом, нельзя разламывать куски размером 11, 12, , 1k, а остальные куски разламывать можно.
 
Теперь куски, которые нельзя ломать, можно есть (не более одного за раз).
 
За один ход можно либо разламывать подходящий по размеру кусок, либо есть.
 
Проигрывает тот, кто не может сделать ход. Определите, кто же станет победителем в игре, если известны начальные размеры шоколадки.
 
Входные данные
Вводятся целые числа 0 < N, M, K <= 100.
 
Выходные данные
Выведите 1 или 2 - номер игрока, который выиграет при правильной игре.

Ввод Вывод
1 1 1 1
1 1 100 1

✓ 12✗ 561 000средняяВойти и решать
Двое играют в такую игру: перед ними лежит шоколадка размера NxM. За ход можно разломить имеющийся кусок шоколадки вдоль одной из сторон на 2 "непустых".
 
Однако, нельзя разламывать куски размером не больше, чем 1k (куски можно поворачивать; мы считаем, что один кусок "не больше" другого, если он равен ему или его части). Таким образом, нельзя разламывать куски размером 11, 12, , 1k, а остальные куски разламывать можно.
 
Проигрывает тот, кто не может сделать ход. Определите, кто же станет победителем в игре, если известны начальные размеры шоколадки.
 
Входные данные
Вводятся целые числа 0 < N, M, K <= 100.
 
Выходные данные
Вывести 1 или 2 - номер игрока, который выиграет при правильной игре.

Ввод Вывод
1 1 1 2
2 2 1 1

 

В начальный момент времени Снарк находится в точке прямой с целой неотрицательной координатой X. За ход он может оказаться в любой точке с целой координатой Y при условии, что |X-Y| <= S. Кроме того, Снарк не любит булочки, поэтому он никогда не прыгнет в клетку, где одна из этих противных штук лежит. Булочник не хочет, чтобы Снарк попал домой. После каждого хода Снарка Булочник может положить булочку в любую точку прямой при условии, что это не начало координат (дом Снарка) и в этой клетке нет Снарка. Определите, сможет ли Булочник помешать Снарку оказаться дома. Изначально в некоторых клетках лежат булочки.
 
Входные данные
В первой строке задаются целые числа 0 <= X < 10000, 0 < S <= 100 и 0 <= N < max(X-1, 0) - количество булочек, которые уже лежат на прямой. Далее идут N различных чисел 0 < bi < X - координаты точек, где лежит гадость.
 
Выходные данные
Выведите "YES", если Булочник сможет реализовать свои грязные планы, "NO" - если при любых действиях врага Снарк сможет припрыгать домой.

Ввод Вывод
1 1 0 NO
10 3 3
7 8 9
YES

✓ 14✗ 4031 300средняяВойти и решать

На вход программы поступает последовательность натуральных чисел A. Количество элементов в последовательности больше числа 7. Необходимо определить количество таких пар элементов последовательности Ai и Aj,\( j – i > 4\), где i и j – номера элементов последовательности, где сумма чисел в каждой из этих пар кратна числу 3.  

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


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

Выходные данные
В качестве ответа программа должна вывести одно число – количество пар элементов, удовлетворяющих условию.
 
 
Примеры
Входные данные Выходные данные
1
10
12
81
2
7
33
99
21
11
121
10
0
6
Строка S была записана много раз подряд, после чего из получившейся строки взяли подстроку и дали вам. Ваша задача определить минимально возможную длину исходной строки S.
 
Входные данные
На вход программы поступает строка, которая содержит только латинские буквы, длина строки не превышает 50000 символов.
 
Выходные данные
Требуется вывести одно число – ответ  на вопрос задачи.
 

 

Примеры
Входные данные Выходные данные
1 z 1
2 abcdef 6
Даша записывает определенное количество чисел, а Маша следит за тем повторялось ли уже записанное число или нет. Если повторялось Маша говорит YES, если нет - NO. Маша устала и хочет, чтобы вы автоматизировали ее работу. Помогите ей. 

Входные данные: В первой строке водится количество чисел N (1<=N<=100 000), во второй строке список чисел через пробел. 
Выходные данные: Для каждого числа выведите слово YES (в отдельной строке), если это число ранее встречалось в последовательности или NO, если не встречалось.
 

 

Примеры
Входные данные Выходные данные
1 6
1 2 3 2 3 4
NO
NO
NO
YES
YES
NO
✓ 118✗ 252500лёгкаяВойти и решать

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

К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда один или сразу несколько первых вагонов и завезти их в тупик (при желании можно даже завезти в тупик сразу весь поезд). После этого часть вагонов вывезти в сторону пути 2. Потом можно завезти в тупик еще несколько вагонов, и снова часть вагонов транспортировать в сторону пути 2. И так далее, чтобы каждый вагон лишь один раз заехал с пути 1 в тупик, а затем один раз выехал из тупика на путь 2. Заезжать в тупик с пути 2 или выезжать из тупика на путь 1 запрещается. Нельзя с пути 1 попасть на путь 2, не заезжая в тупик.

Известно в каком порядке изначально идут вагоны поезда. Требуется, с помощью указанных операций, сделать так, чтобы вагоны поезда шли по порядку (сначала первый, потом второй и т.д., считая от головы поезда, едущего по пути 2 в сторону от тупика). Напишите программу, определяющую, можно ли это сделать.
 
Входные данные
Вводится число N — количество вагонов в поезде (\(1<=N<=2000\)). Дальше идут номера вагонов в порядке от головы поезда, едущего по пути 1 в сторону тупика. Вагоны пронумерованы натуральными числами от 1 до N, каждое из которых встречается ровно один раз.
 
Выходные данные
Можно ли сделать так, чтобы вагоны шли в порядке от 1 до N, считая от головы поезда, когда поезд поедет по пути 2 из тупика? Если можно, выведите сообщение YES. Если нельзя, то выведите NO.
 
 
Примеры
Входные данные Выходные данные Примечание
1 3
3 2 1
YES Надо весь поезд завезти в тупик, а затем целиком вывезти его на 2-й путь
2
4
4 1 3 2
YES
Сначала надо в тупик завезти два вагона, один из которых оставит в тупике, а второй — вывезти на 2-й путь, после чего завезти в тупик еще два вагона и вывезти 3 вагона, стоящие в тупике, на 2-й путь
3 3
2 3 1
NO  
✓ 1 108✗ 1 645600лёгкаяВойти и решать
49#33264
Камера снимает видео без звука с частотой 24 кадра в секунду, при этом изображения используют палитру, содержащую 224 = 16 777 216 цветов.  Параллельно записывается звук в формате стерео. 1 минута видеоряда в среднем занимает 36 Мбайт, 1 минута звуковой дорожки занимает в среднем 6 Мбайт. Для хранения, видео преобразуют так, что для изображений используется палитра в 256 цветов, а звук перезаписывается в формате моно с частотой дискретизации 16 кГц и глубиной кодирования 16 бит. Другие преобразования и иные методы сжатия не используются. Сколько Мбайт составляет средний вес 1 минуты преобразованного видео со звуком? (Ответ округлите до ближайшего целого числа).
Сегодня у Кэрол выходной. Но даже в этот прекрасный весенний день она не отдыхает, а тренируется и готовится к сражениям со скруллами. Одним из важных навыков является умение быстро ориентироваться в незнакомых местах. Для того, чтобы отточить это умение, Кэрол пригласила своего наставника Йон-Рогга.
Кэрол и Йон-Рогг будут играть в следующую игру. Сначала Йон-Рогг нарисует на бумаге карту убежища скруллов. Карта представляет из себя n помещений, пронумерованных от 1 до n. Некоторые пары помещений соединены двусторонними переходами. Убежище устроено так, что от любого помещения до любого другого можно добраться, перемещаясь по коридорам. Для того, чтобы игра не была слишком сложной, Йон-Рогг нарисует ровно n − 1 переход между помещениями. Иными словами, карта убежища представляет собой дерево.
Известно, что для перевозки грузов между помещениями в убежище скруллы используют специальных роботов. Роботы довольно примитивны и плохо ориентируются в убежище. Для решения этой проблемы скруллы выбрали в каждом переходе ровно одно направление, вдоль которого могут перемещаться роботы.
После того, как Йон-Рогг нарисует на бумаге карту убежища, он также для каждого перехода отметит, в каком направлении по нему перемещаются роботы. Иными словами, Йон-Рогг ориентирует ребра нарисованного дерева.
Чтобы структурировать карту убежища, Кэрол должна составить список, состоящий из всех номеров помещений в некотором порядке. При этом должно выполняться следующее условие: в любом переходе роботы перемещаются от помещения, которое идет в списке раньше, к помещению, которое идет с писке позже. Более формально, Кэрол должна составить такую перестановку номеров помещений p1p2 . . . pn, для которой верно, что если роботы могут перемещаться по переходу от помещения pi к помещению pj , то i < j.
Пока Кэрол бьется над своим заданием, Йон-Роггу стало интересно, сколько всего решений существует у этой задачи. Иными словами, Йон-Роггу интересно, сколько перестановок удовлетворяют условию, описанному выше. Помогите ему узнать это. Так как ответ может быть очень большим, Йон-Рогг попросил вас сообщить лишь его остаток от деления на 998 244 353.

Входные данные: Первая строка входных данных содержит единственное целое число n — количество помещений в убежище, нарисованном Йон-Роггом (1 <= n <= 3 000).
Каждая из следующих n − 1 строк содержит два целых числа a, b — номера помещений, соединенных очередным коридором (1 <= a, b <= n). Роботы перемещаются по коридору в направлении от помещения a к помещению b.
Гарантируется, что убежище представляет собой дерево, то есть от любого помещения можно добраться до любого другого, двигаясь по переходам (возможно, в направлении, противоположном направлению движения роботов в этом переходе).

Выходные данные: Выведите остаток от деления на 998 244 353 количества различных перестановок p1p2 . . . pn, для которых верно, что если роботы перемещаются по переходу от помещения pi к помещению pj , то i < j.
 
Примеры
Входные данные Выходные данные
1
3
1 2
1 3
2
2
4
2 3
3 1
2 4
3

Замечание
В первом тесте из примера Кэрол может выписать две перестановки: {1, 2, 3} или {1, 3, 2}.
Во втором тесте Кэрол может выписать три перестановки: {2, 3, 1, 4}, {2, 3, 4, 1} или {2, 4, 3, 1}.
 
Поделиться
Класснуть