Язык программирования

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

Условие. Дан массив из \(n\) вещественных чисел. Вычислите и выведите пять статистических характеристик.

Формат ввода. Первая строка содержит целое число \(n\) (\(1 \le n \le 10^5\)). Вторая строка содержит \(n\) вещественных чисел, разделённых пробелами.

Формат вывода. Пять строк, каждая в виде <метка>: <значение>, значение округлено до 4 знаков после запятой:\(\bar{a} = \frac{1}{n}\sum_{i=1}^{n} a_i, \qquad \sigma(a) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(a_i - \bar{a})^2}\)  

Пример ввода:

5
3.0 1.0 4.0 1.0 5.0

Пример вывода:

min: 1.0000
max: 5.0000
mean: 2.8000
median: 3.0000
std: 1.6000
✓ 19✗ 18600лёгкаяВойти и решать
A + B#91346

Так как стандартная операция сложения слишком сложна, чтобы описать её в рамках этой страницы, мы введём свою операцию сложения <<+>>. Результатом сложения чисел \(A\) и \(B\) (обозначим \(A+B\)) назовём число, полученное приписыванием справа к \(A\) числа \(B\). Например \(20 + 25 = 2025\), а \(25 + 20 = 2520\). Как видите, \(A + B\) не всегда равно \(B + A\), так что найдите большее из них.

То есть по заданным \(A\) и \(B\) требуется найти наибольшее из чисел \(A+B\) и \(B+A\).

В единственной строке вводятся два целых числа \(A\) и \(B\) (\(0 < A, B < 1000\)).

Выведите единственное число — наибольшее из чисел \(A+B\) и \(B+A\).

📊
Шаг 8: Подсчёт атак
Средне
Мы перехватили журнал атак вируса — последовательность типов атак. Нужно подсчитать частоту каждого типа и составить отчёт в алфавитном порядке.
Условие задачи
 

Дана строка слов через пробел — типы атак. Подсчитай, сколько раз встречается каждый тип, и выведи результаты в алфавитном порядке.

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

Одна строка: слова через пробел (латиница, от 1 до 100 слов).

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

На каждой строке: тип и количество через пробел (в алфавитном порядке типов).

🏆
Шаг 6: Рейтинг героев
Средне
Вирус перемешал рейтинги героев. Чтобы восстановить турнирную таблицу, нужно отсортировать баллы и показать лидеров. Применяй навыки сортировки!
Условие задачи
 

Дана строка из N целых чисел — рейтинги героев. Выведи три строки:

  • все числа, отсортированные по возрастанию, через пробел;
  • три наибольших числа через пробел (от меньшего к большему);
  • среднее арифметическое, округлённое вниз (целочисленное деление).
Входные данные

Одна строка: N целых чисел через пробел (3 ≤ N ≤ 100, значения от 0 до 10000).

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

Три строки.

🔍
Шаг 5: Частотный анализ
Средне
Мы засекли серию повторяющихся сигналов от вируса. Чтобы понять его логику, нужно определить, какой сигнал встречается чаще всего. Это ключевая частота!
Условие задачи
 

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

Гарантируется, что такое число единственно.

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

Одна строка: набор целых чисел через пробел (от 1 до 100 чисел, значения от 0 до 1000).

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

Две строки: число-лидер и его частота.

Подсказка: Собери частоты в словарь через d[x] = d.get(x, 0) + 1.
✓ 15✗ 14400лёгкаяВойти и решать
🛡️
Шаг 2: Фильтр аномалий
Просто
Вирус внедрил в систему аномальные значения. Нормальный сигнал — это число в допустимом диапазоне. Всё, что за границами — мусор от вируса. Отфильтруй чистые данные!
Условие задачи
 

В первой строке — два целых числа L и R — допустимый диапазон (включительно). Во второй строке — набор целых чисел через пробел.

Выведи через пробел только те числа, которые попадают в диапазон от L до R, в том же порядке.

Если подходящих чисел нет, выведи слово ПУСТО.

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

Первая строка: два целых числа L и R (L ≤ R). Вторая строка: набор целых чисел через пробел.

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

Отфильтрованные числа через пробел, или слово ПУСТО.

📡
Шаг 1: Перехваченные данные
Просто
Кибер-агент, ты на связи! Вирус «Пиксель» атаковал серверы игровой вселенной «НеоСфера». Мы перехватили фрагмент данных — список числовых кодов. Проведи базовый анализ, чтобы понять масштаб утечки.
Условие задачи
 

Дана строка из N целых чисел через пробел. Выведи пять чисел, каждое на отдельной строке:

  • количество чисел в списке;
  • сумму всех чисел;
  • минимальное число;
  • максимальное число;
  • первое число минус последнее число.
Входные данные

Одна строка: N целых чисел через пробел (1 ≤ N ≤ 100, числа от −1000 до 1000).

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

Пять чисел, каждое на отдельной строке.

Подсказка: Считай список: a = list(map(int, input().split())). Дальше — len(), sum(), min(), max(), a[0] - a[-1].

В отеле есть традиция устраивать публичное вечернее кормление всех живущих в отеле кошек. Всего в нём живёт \(n\) кошек, и имеется по одной личной миске для каждой из кошек и одна большая общая миска, из которой может наесться любое количество питомцев. Личные миски кошек расположены в один ряд, а общая стоит отдельно от всех остальных.

Ваши питомцы хорошо обучены есть строго либо из своей миски, либо из большой общей миски. Когда \(i\)-й котик ест из своей миски, то он выглядит милым на некоторую величину \(a_i\). Если бы все котики спокойно кушали из своей миски, то общая милота ужина вычислялась бы как сумма \(a_i\) всех котиков.

Но не все так просто, некоторые питомцы слишком увлекаются едой и начинают толкать своего соседа справа во время трапезы, тем самым мешая другим кушать и портя общую милоту ужина. Допустим, вы знаете, что \(i\)-й котик толкается, тогда вы можете избежать толкания, если посадить либо \(i\)-го котика, либо \(i+1\)-го котика ужинать за общую миску, но в таком случае отсаженный котик уже не будет привносить милоту в общую милоту ужина. Вам известно, что толкание \(i\)-го котика своего соседа справа отнимает \(q_i\) общей милоты ужина. Таким образом, общая милота ужина вычисляется как сумма милоты всех котиков, которые ужинают за своей миской, из которой вычитаются все \(q_i\) котиков, которые толкают своего соседа на позиции \(i+1\).

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

image

Формат входных данных
Первая строка содержит одно целое число \(n\) \((1 \le n \le 10^6)\) — количество котиков.

Вторая строка содержит \(n\) целых чисел \((1 \le a_i \le 10^6)\), где \(a_i\) — милота \(i\)-го котика.

Третья строка содержит одно число \(m\) \((0 \le m < n)\) — количество котиков, толкающих своего соседа.

Каждая из последующих \(m\) строк содержит два числа \(k_i\) \((1 \le k_i < n)\) и \(q_{k_i}\) \((1 \le q_{k_i} \le 10^6)\), обозначающую, что если \(k_i\) котик толкается, то общая милота ужина уменьшается на \(q_{k_i}\).

Формат выходных данных
В качестве ответа выведите одно число — максимально возможную милоту ужина.

 

В первом примере можно отсадить первого питомца к общей миске, а остальных отправить ужинать за свои миски. Суммарная милота благодаря тому, что котики кушают за своими мисками, будет равна \(20 + 30 + 40 + 50 = 140\), но третий котик будет толкать четвертого, поэтому из этой суммы вычитается \(q_3 = 25\). Таким образом, ответ на этот пример равен \(115\).

В Отеле все комнаты пронумерованы числами длины \(n\) (возможно, с ведущими нулями). Как и заведено во всех отелях, при заселении Вам выдали ключ, на котором написан номер, также состоящий из \(n\) цифр (возможно, с ведущими нулями).

В Отеле ключ открывает комнату, только если выполнено следующее условие. Для каждого \(1 \le i < n\), сумма \(i\)-й и \((i+1)\)-й цифры номера комнаты должна быть равна \(i\)-й цифре ключа по модулю 10. Помимо этого, последняя цифра ключа должна быть равна сумма первой и последней цифры номера комнаты по модулю 10.

Найдите все номера комнат, которые открывает имеющийся у Вас ключ.

Формат входных данных
На первой строке дано число \(n\) (\(2 \le n \le 100\,000\)) — количество цифр в номерах комнат.

Во второй строке написан номер ключа, гарантируется, что это строка длины \(n\), состоящая только из цифр.

Формат выходных данных
На первой строке выведите количество комнат, открываемых ключом.

На каждой следующей строке выведите каждый из номеров этих комнат, по одному номеру в строке. Каждый номер комнаты должен представлять собой строку длины \(n\), состоящую только из цифр.

 

Поясним второй пример. Ключ с номером 25575 открывает комнату 57870 так как: \[2 = (5 + 7) \mod 10\] \[5 = (7 + 8) \mod 10\] \[5 = (8 + 7) \mod 10\] \[7 = (7 + 0) \mod 10\] \[5 = (0 + 5) \mod 10\]

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

В ресторане отеля есть \(n\) видов специй. Каждый день повар выбирает \(m\) из них для главного блюда дня. Помощник главного повара тестирует блюдо и после этого оно поступает на обед в ресторан.

Известно, что у помощника есть аллергия на \(k\) видов специй, имеющихся в ресторане. Сегодня он протестировал блюдо и аллергии не возникло.

На обед пришло \(p\) человек, у каждого из которых тоже есть аллергия на некоторые виды специй. Попробуйте для каждого из участников обеда предположить, может ли у них возникнуть аллергия на главное блюдо?

В первой содержатся целые числа \(n\) и \(m\) (\(1 \le m \le n \le 100\)) — число специй на складе и количество специй в главном блюде соответственно.

Далее в отдельной строке идет число \(k\) (\(0 \le k \le n\)) — число специй, на которые аллергия у помощника повара.

В следующих \(k\) строках содержатся названия специй, на которые есть аллергия у помощника повара.

В следующей строке написано число \(p\) (\(1 \le p \le 100\)) — число людей на обеде. Далее идет \(p\) блоков, описывающих специи, опасные для \(i\)-го участника обеда. Каждый блок начинается строкой с числом \(n_i\) (\(0 \le n_i \le n\)) — количеством продуктов, на которые аллергия у \(i\)-го человека, вслед за которым идёт \(n_i\) строк с названиями аллергенных специй.

Все названия — слова из латинских букв длиной не более 30 символов.

Для каждого из \(p\) запросов выведите на отдельной строке одно слово:

  • NO, если обед будет полностью безвреден для очередного гостя;

  • YES, если в главном блюде есть специя аллергенная для гостя;

  • MAYBE, если при таких исходных данных возможна и та, и другая ситуация.

В столице Флатландии открыта линия городской электрички. На линии \(n\) станций, пронумерованных от \(1\) до \(n\). Линия проходит город по диаметру и обоими концами уходит в область. А именно, станции с \(1\)-й по \(a\)-ю находятся в области, затем станции с \((a+1)\)-й по \((b-1)\)-ю находятся в городе, а станции с \(b\)-й по \(n\)-ю находятся в области.

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

  • Если и начальная, и конечная станция находятся в городе, применяется тариф <<город>>.

  • Если обе станции находятся в области, причём между этими станциями электричка не проезжает через город, то применяется тариф <<область>>.

  • В противном случае применяется тариф <<полный>>.

Напишите программу, которая по начальной станции \(s\) и конечной станции \(t\) определяет, какой тариф необходимо применить.

Формат входных данных
Первая строка содержит три целых числа: \(n\), \(a\) и \(b\) (\(3 \le n \le 10^9\), \(1 \le a\), \(b \le n\), \(b - a > 1\)).

Вторая строка содержит два целых числа: \(s\) и \(t\) (\(1 \le s, t \le n\), \(s \ne t\)).

Формат выходных данных
Если необходимо применить тариф <<город>>, выведите <<City>>.

Если необходимо применить тариф <<область>>, выведите <<Outside>>.

Если необходимо применить тариф <<полный>>, выведите <<Full>>.

Саша пронумеровала клетки шахматной доски, начиная с левого нижнего угла (клетки a1) по горизонталям сверху вниз, внутри горизонтали слева направо. У неё получилась следующая нумерация:

image

По заданному номеру клетки выведите, что это за клетка.

На вход подаётся одно число \(n\) от 1 до 64.

Выведите, какая клетка получила номер \(n\).

В этой задаче 20 тестов, каждый оценивается независимо в 5 баллов.

Как часть исследования вопроса "почему коровы переходят дороги", Фермер Джон получить задание составить документ о том, сколько раз каждая из его коров переходила дорогу. Он тщательно залоггировал данные о местоположении каждой из его коров, и выполнил серию из \(N\) наблюдений в течение дня. Каждое наблюдение содержало ID коровы (целое число в интервале \(1 \ldots 10\), поскольку у ФД было всего 10 коров), а также на какой стороне дороги находится корова.

Основываясь на данных записанных ФД, помогите ему посчитать общее число подтверждённых пересечений. Подтверждённые пересечения - это когда при последовательных наблюдениях, корова находилась на разных сторонах дороги.

ФОРМАТ ВВОДА (файл crossroad.in):

Первая строка ввода содержит количество наблюдений, \(N\), положительное целое число не более 100. Каждая из последующих \(N\) строк содержит одно наблюдение, которое содержит ID коровы за которым стоит число 0 или 1 (0 на одной стороне дороги, 1 на другой стороне дороги).

ФОРМАТ ВЫВОДА (файл crossroad.out):

Вычислите общее количество подтверждённых пересечений.

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

Коровы, ленивые по природе, не хотят производить много молока. Они хотят производить второе по минимальности количество моллока. Определите, сколько коров занимают эту позицию.

ФОРМАТ ВВОДА (файл notlast.in):

Ввод начинается со строки, содержащей целое число \(N\) (\(1 \leq N \leq 100\)), определяющее количество записей в протоколе дойки.

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

ФОРМАТ ВЫВОДА (файл notlast.out):

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

Беси помогает Фермеру Джону проводить USACO - он-лайн соревнование, где участники отвечают на трудные вопросы по коровьему бытию.

Недавно ФД ввёл в контест 4 дивизиона сложности: Bronze, Silver, Gold, Platinum. Все новые участники начинают в дивизионе Bronze, как только они показывают на контесте совершенный результат, они переводятся в следующий дивизион. Возможно даже, что участник переводится несколько раз в течение одного контеста. ФД хранит список всех участников и их текущий дивизион. Поэтому каждый начинает со своего дивизиона в любой момент контеста.

Когда ФД публикует результаты последнего контеста, он хочет включить информацию по количествам переведенных из Bronze в Silver, из Silver в Gold, из Gold в Platinum. Однако он затрудняется считать перемещения, если они происходят в течение одного контеста. Беси поняла, что ФД может выводить количество случившихся перемещений непосредственно из количества участников в каждом уровне до и после контеста. Помогите ей выполнить эти вычисления.

ФОРМАТ ВВОДА (файл promote.in):

Ввод состоит из 4 строк, каждая содержит два числа в интервале 0..1,000,000. Первая строка указывает количество участников в дивизионе Bronze до и после контеста. Вторая строка указывает количество участников в дивизионе Silver до и после контеста. Третья строка указывает количество участников в дивизионе Gold до и после контеста. Четвёртая строка указывает количество участников в дивизионе Platinum до и после контеста.

ФОРМАТ ВЫВОДА (файл promote.out):

Пожалуйста, выведите три строки, каждая содержит одно целое число. Первая строка должна содержать количество участников, которые были перемещены из Bronze в Silver. Вторая строк должна содержать количество участников, которые были перемещены из Silver в Gold. Последняя строка должна содержать количество участников, которые были перемещены из Gold в platinum.

Фермер Джон пытается научить своих коров читать, дав им множество из N дощечек, обычно используемых дошкольниками (\(1 \leq N \leq 100\)). Каждая дощечка имеет слово и рисунок на каждой стороне. Например, одна сторона может иметь слово 'cat' и картинку кота на одной стороне и слово 'dog' и картинку собаки на другой стороне.

Когда дощечки лежат на земле, видно \(N\) слов. Переворачивая таблички можно получать различные множества из \(N\) слов. Чтобы помочь коровам запомнить буквы, ФД хочет подготовить некоторое количество деревянных блоков, на каждом из которых выписана одна буква алфавита. Он хочет подготовить достаточное количество блоков с каждой буквой, для того чтобы вне зависимости от того, какое множество из \(N\) слов показывается, коровы могли составить все слова используя эти блоки. Например, если \(N=3\) и на табличках представлены слова 'box', 'cat', 'car', коровам нужно как минимум 1 'b', 1 'o', 1 'x', 2 'c', 2 'a', 1 't', 1 'r'.

Помогите ФД определить минимальное количество блоков для каждой буквы алфавита, которые он должен обеспечить, чтобы вне зависимости от того какой стороной вверх направлены таблички, можно было составить все \(N\) видимых слов.

ФОРМАТ ВВОДА (файл blocks.in):

Строка 1 содержит целое число \(N\).

Каждая из следующих \(N\) строк содержит 2 слова, разделённых одиночным пробелом, задавая два слова на противоположных сторонах дощечки. Каждое слово – строка не более чем из 10 маленьких английских букв.

ФОРМАТ ВЫВОДА (файл blocks.out):

Выведите 26 строк. Первая выходная строка должна содержать требуемое количество букв ‘a’. Следующая строка должна содержать требуемое количество букв ‘b’. И т.д.

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

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

Первая строка ввода содержит целые числа \(a\) и \(b\), разделённые одним пробелом (\(a < b\)).

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

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

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

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

Первая строка ввода содержит целые числа \(a\) и \(b\), разделённые одним пробелом (\(a < b\)).

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

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

Marathon#90333

Беси участвует в марафоне.
Маршрут марафона состоит из N контрольных точек (3 <= N <= 500),
которые надо посетить по порядку, причём контрольная точка 1 -
старт, контрольная точка N - финиш.

Беси решил пропустить до K (K сократить себе маршрут. Она не может пропустить контрольные точки
1 и N.

Определите минимальное расстояние которое пробежит Беси, если она
может пропустить до K контрольных точек.

Поскольку марафон проводится на улицах Манхэттена, то и расстояние
между точками (x1, y1) и (x2, y2) нужно определять манхэттенское:
|x1-x2| + |y1-y2|.

INPUT: (файл marathon.in)

В первой строке задаются N и K.
Каждая из следующих N строк содержит два разделённых пробелом целых
числа x и y, представляющих контрольную точку (-1000 <= x <= 1000,
-1000 <= y <= 1000). Контрольные точки даны в порядке, в котором они
должны посещаться.

Заметим, что маршрут марафона может самопересекаться несколько раз
и некоторые контрольные точки могут быть в одной и той же позиции.
Когда Беси пропускает контрольную точку в некоторой позиции, она
пропускает только экземпляр контрольной точки, а не все контрольные
точки в этой позиции.

Формат выходных данных

Выведите миниальное расстояние, которое Беси может пробежать,
пропустив до K контрольных точек. В данном примере, пропустив
точки (8,3) и (10,-5) она пробежит минимальное растояние, равное 4.

Поделиться
Класснуть