Информатика

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

При составлении четырехзначных чисел используются цифры 1, 2, 3, 4 и 5. При этом соблюдаются следующие правила:

а)      на первом месте стоит одна из цифр 1, 2 или 3;
б)      после каждой четной цифры идет нечетная, после каждой нечетной – четная;
в)      третьей не может быть цифра 5.
 Какое из перечисленных чисел создано по этим правилам:
1) 4325                    2) 1432                        3) 1241                       4) 3452
218#218

Цепочка строится из бусин четырех типов, обозначенных буквами А, Б, В, И. Цепочка из трех бусин формируется по следующему правилу: 1) цепочка начинается согласной буквой; 2) после гласной буквы не может снова стоять гласная, а после согласной – согласная; 3) последней буквой не может быть А или В. Какая из следующих цепочек создана по этому правилу:

1) БВИ                     2) АВИ                        3) БАВ                        4) БИБ
211#211

Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, по какой из масок будет выбрана указанная группа файлов

 make.cpp, name.c, age.pc, name.cpp
 
1) *a*e.?                    
2) a?e.*                
3) *a?e.*             
4) ?a?e.*
88#88

Значком /\ обозначена логическая операция  И, значком \/ - логическая операция ИЛИ, значком  ¬ - логическая операция НЕ, значком → - логическая операция следования
Для какого символьного выражения неверно Первая буква гласная → ¬(Третья буква согласная)

1) абедс            2) бесде         3) бабас          4) абсаб

37#37

Для кодирования букв А, Б, В, Г решили использовать двухразрядные последовательные двоичные числа (от 00 до 11, соответственно). Если таким способом закодировать последовательность символов БАВГ и записать результат шестнадцатеричным кодом, то получится

1) 4B              2) 411               3) BACD              4) 1023

36#36

Значком /\ обозначена логическая операция  И, значком \/ - логическая операция ИЛИ, значком  ¬ - логическая операция НЕ
Символом F обозначено одно из указанных ниже логических выражений от трех аргументов: X, Y, Z.
Дан фрагмент таблицы истинности выражения F:

X Y Z F
1 0 0 1
0 0 0 1
1 1 1 0



 

 

Какое выражение соответствует F?

1) not(X) /\ not(Y) /\ not(Z)
2)X /\ Y /\ Z
3)X \/ Y \/ Z
4)not(X) \/ not(Y) \/ not(Z)

Дана последовательность вещественных чисел \(a_1, a_2, \dots, a_N\) и целое число \(K\). Для каждого индекса \(i\), удовлетворяющего условию \(K+1 \le i \le N-K\), рассмотрим множество его \(2K\) соседей: \[S_i = \{ a_{i-K}, \dots, a_{i-1}, a_{i+1}, \dots, a_{i+K} \}.\] Вычислим среднее арифметическое элементов этого множества: \[\mu_i = \frac{1}{2K} \sum_{x \in S_i} x\] и их стандартное отклонение: \[\sigma_i = \sqrt{ \frac{1}{2K} \sum_{x \in S_i} (x - \mu_i)^2 }.\] Элемент \(a_i\) называется выбросом, если выполняется неравенство \[|a_i - \mu_i| > 2\sigma_i.\] Если \(\sigma_i = 0\) (все числа в \(S_i\) равны), то условие превращается в \(|a_i - \mu_i| > 0\), то есть \(a_i\) считается выбросом, когда он отличается от этого общего значения.

Требуется определить количество выбросов среди всех элементов, для которых определена окрестность (т. е. для \(i = K+1, K+2, \dots, N-K\)).

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

Входные данные
Первая строка содержит два целых числа \(N\) и \(K\) (\(1 \le K \le \lfloor N/2 \rfloor\), \(N \le 200\,000\)). Вторая строка содержит \(N\) вещественных чисел \(a_1, a_2, \dots, a_N\), разделенных пробелами

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

Выведите одно целое число — количество выбросов.
 

Примеры
Входные данные Выходные данные
1 8 2
-0.87270147 -0.34887844 0.95993054 -0.51785580 -0.44876428 0.94608416 -0.30955386 2.16387322
1

Примечание
Ваш балл за задачу — это доля пройденных верно тестов. Пример из условия не входит в число оцениваемых тестов.

 

Вам на вход подаётся JSON-ответ от API погоды с разделами current (текущая температура) и hourly (почасовой прогноз на 24 часа).

Составьте сводку погоды за сутки.

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

Одна строка — JSON-объект с разделами current и hourly.

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

Ровно 6 строк:

=== ПОГОДА НА СУТКИ ===
Сейчас: T°C
Максимум: X°C
Минимум: Y°C
Средняя: A°C
Размах: R°C

где T — текущая температура из current, X/Y/A — максимум, минимум и среднее по массиву hourly (среднее округлить до 1 знака), R — разница между максимумом и минимумом.

Вам на вход подаётся JSON-ответ от API погоды с почасовым прогнозом и пороговое значение температуры.

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

В разделе hourly время хранится как "2026-04-16T15:00". Возьмите только часть после T (получится 15:00).

Если таких часов нет, выведите Нет данных.

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

Первая строка — JSON-объект с разделом hourly.
Вторая строка — целое число (порог).

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

По одной строке на каждый подходящий час:

HH:00 — X°C

Или Нет данных, если ни один час не подошёл.

Ученик напечатал в текстовом процессоре следующий текст.

Московский Кремль является старейшей частью города и его главным историческим центром. Площадь территории Кремля составляет около 277000 квадратных метров. На территории Кремля расположены соборы, дворцы и здания правительства. Кремль включён в список Всемирного наследия ЮНЕСКО.

Далее он выполнил последовательно следующие действия:

  1. Поставил курсор справа от точки после слова «метров».
  2. Нажал клавишу Enter.
  3. Выделил весь текст.
  4. В свойствах меню «абзац» выставил значения:
    1) отступ первой строки: 1,5 см;
    2) выравнивание по ширине.

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

  1. Выделил словосочетание «Московский Кремль» и нажал на кнопку Ж.
  2. Выделил словосочетание «квадратных метров» и нажал клавишу backspace на клавиатуре. Напечатал «м2» (без кавычек).
  3. Выделил цифру 2 в «м2» и нажал на кнопку (надстрочный символ).
  4. Выделил словосочетание «Всемирного наследия ЮНЕСКО» и нажал на кнопку К.
  5. Выделил весь текст.
  6. Установил шрифт Times New Roman (с засечками).

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

Вариант 1

Московский Кремль является старейшей частью города и его главным историческим центром. Площадь территории Кремля составляет около 277000 м2.

На территории Кремля расположены соборы, дворцы и здания правительства. Кремль включён в список Всемирного наследия ЮНЕСКО.

Вариант 2

Московский Кремль является старейшей частью города и его главным историческим центром. Площадь территории Кремля составляет около 277000 м2.

На территории Кремля расположены соборы, дворцы и здания правительства. Кремль включён в список Всемирного наследия ЮНЕСКО.

Вариант 3

Московский Кремль является старейшей частью города и его главным историческим центром. Площадь территории Кремля составляет около 277000 м2. На территории Кремля расположены соборы, дворцы и здания правительства. Кремль включён в список Всемирного наследия ЮНЕСКО.

Вариант 4

Московский Кремль является старейшей частью города и его главным историческим центром. Площадь территории Кремля составляет около 277000 м2.

На территории Кремля расположены соборы, дворцы и здания правительства. Кремль включён в список Всемирного наследия ЮНЕСКО.

При обработке результатов биохимического эксперимента часто требуется привести данные к единому масштабу. Выполните min-max нормализацию массива по формуле: \[x_{\mathrm{norm}} = \frac{x - \min(a)}{\max(a)-\min(a)}.\] После нормализации все значения лежат в отрезке \([0;\,1]\).

Формат ввода

Первая строка — целое число \(n\) (\(2\le n\le 10^5\)). Вторая строка — \(n\) вещественных чисел через пробел. Гарантируется, что \(\min(a)\ne\max(a)\).

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

Одна строка — \(n\) вещественных чисел, каждое округлено до 4 знаков после запятой, через пробел.

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

5
10.0 20.0 30.0 40.0 50.0

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

0.0000 0.2500 0.5000 0.7500 1.0000

Подсказка. Функции np.min(), np.max() и np.round() позволяют решить задачу в одну-две строки без циклов.

✓ 7✗ 21800средняяВойти и решать

Дана строка ДНК, состоящая из символов A, T, G, C. Длина строки кратна 3. Выполните следующие вычисления:

  1. Длина последовательности.

  2. GC-состав — процентная доля нуклеотидов G и C: \[\mathrm{GC\%} = \frac{|G|+|C|}{n}\times 100,\] где \(|X|\) — количество символов \(X\), \(n\) — длина строки. Округлить до 2 знаков после запятой.

  3. Обратная комплементарная цепь (reverse complement). Комплементарность: \(\texttt{A}\leftrightarrow\texttt{T}\), \(\texttt{G}\leftrightarrow\texttt{C}\); затем цепь разворачивается.

  4. GC-богатые кодоны — количество кодонов (трёхбуквенных блоков), в которых два или три нуклеотида являются G или C.

  5. Наиболее частый нуклеотид. При ничьей вывести тот, который идёт первым в алфавитном порядке (\(\texttt{A}<\texttt{C}<\texttt{G}<\texttt{T}\)).

Формат ввода

Одна строка — последовательность ДНК (только заглавные A, T, G, C; \(6\le n\le 300\); \(n\) кратно 3).

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

Ровно 5 строк в следующем порядке:

length: <целое>
gc: <вещественное, 2 знака>
rc: <строка>
gc_rich_codons: <целое>
most_frequent: <символ>

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

ATGGGCCCTATGAAA

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

length: 15
gc: 46.67
rc: TTTCATAGGGCCCAT
gc_rich_codons: 2
most_frequent: A

Разбор примера. Последовательность: ATG | GGC | CCT | ATG | AAA. GC-состав: \((4+3)/15=7/15\approx46{,}67\%\). Кодоны GGC (3 G/C) и CCT (2 G/C) — итого 2 GC-богатых кодона. Частоты: \(A=5,\;G=4,\;C=3,\;T=3\) \(\Rightarrow\) лидирует A.

Дана строка, задающая полином \(f(x)\) степени не выше 3, и два целых числа \(a\), \(b\) — пределы интегрирования. Выполните три операции:

  1. Найдите производную \(f'(x)\) и упростите её.

  2. Вычислите определённый интеграл \(\displaystyle\int_a^b f(x)\,dx\). Выведите точное значение (целое или дробное, например 27/4 или 0).

  3. Найдите все вещественные корни \(f(x) = 0\). Выведите их через пробел в порядке возрастания. Если вещественных корней нет — выведите none. Кратные корни выводятся один раз.

Формат ввода.
Строка 1: выражение полинома в синтаксисе Python (** для возведения в степень, * для умножения, только переменная x).
Строка 2: два целых числа \(a\) и \(b\) через пробел (\(-100 \le a < b \le 100\)).

Формат вывода. Ровно 3 строки:

derivative: <выражение>
integral: <точное значение>
roots: <числа через пробел, или "none">

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

x**3 - 4*x**2 + x + 6
0 3

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

derivative: 3*x**2 - 8*x + 1
integral: 27/4
roots: -1 2 3

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

x**2 - 4*x + 4
0 3

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

derivative: 2*x - 4
integral: 3
roots: 2

Корень \(x=2\) кратный — выводим один раз.

Разбор примера 1. \(f(x) = x^3 - 4x^2 + x + 6\).

\[f'(x) = 3x^2 - 8x + 1, \qquad \int_0^3 f\,dx = \left[\frac{x^4}{4} - \frac{4x^3}{3} + \frac{x^2}{2} + 6x\right]_0^3 = \frac{81}{4} - 36 + \frac{9}{2} + 18 = \frac{27}{4}\] \[f(-1) = -1-4-1+6 = 0,\quad f(2) = 8-16+2+6=0,\quad f(3)=27-36+3+6=0.\] Корни: \(-1,\ 2,\ 3\).

Подсказки по реализации.

  • Для разбора строки: parse_expr(s, transformations=standard_transformations + (implicit_multiplication_application,)).

  • Чтобы отфильтровать только вещественные корни: im(r) == 0.

  • simplify(diff(expr, x)) даёт упрощённый вид производной.

  • Сортировка корней: sorted(..., key=lambda r: float(r)).

🎯
Шаг 9: Отчёт командира
Средне
Финальная задача перед решающей атакой! Нужно составить рейтинг серверных зон по суммарному урону. Данные разбросаны — одна зона может встречаться несколько раз. Сгруппируй и отсортируй!
Условие задачи
 

Дано N строк. В каждой — название зоны и число (урон), через пробел. Одна зона может встречаться несколько раз.

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

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

В первой строке — число N. В каждой из следующих N строк — название зоны и целое число через пробел.

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

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

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

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

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

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

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

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

В Отеле все комнаты пронумерованы числами длины \(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. Утверждается, что больше никакие комнаты этим ключом открыть нельзя.

Недавно руководители Отеля поняли, что гостей становится все больше и нужно расширять штат. С чего бы начать? Первым на работу взяли нового Портье.

Но вот незадача, Портье ещё не успел освоиться на новом месте, как уже начались проблемы. Недовольные постояльцы вызвали его к себе в номер на шестом этаже, однако, по неопытности он заблудился и зашел в комнату \(404\)!!! А там…Лабиринт.

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

Допустим, что \(i\)-я и \(j\)-я двери покрашены в один и тот же цвет, причём \(i < j\). В таком случае, если Портье зайдёт в \(i\)-ю дверь, то он окажется между \(j\)-й и \((j+1)\) -й дверьми и сможет дальше зайти в одну из них. Если же он зайдёт в \(j\)-ю дверь, то он окажется между \((i-1)\) -й и \(i\)-й дверьми и далее сможет зайти в одну из них. Если \(i = 1\), то войдя в \(j\)-ю дверь, Портье окажется левее первой двери и далее сможет зайти только в неё же, а если \(j = n\), то войдя в \(i\)-ю дверь, он окажется правее последней двери и выберется из лабиринта.

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

Формат входных данных
В первой строке находится чётное число \(n\) \((2 \le n \le 200\,000)\) — количество дверей в лабиринте.

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le n\)), где \(a_i\) — цвет \(i\)-й двери в последовательности. Гарантируется, что в лабиринте ровно по две двери каждого из цветов.

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

 

Ниже на картинке изображено пояснение к первому примеру из условия.

image

Вы с друзьями уже давно заехали в отель, но только сейчас выяснилось, что в отеле существуют так называемые <<Тихие часы>>. Во время этих часов все должны находиться в своих комнатах, и обойти это ограничение нельзя, потому ключи от комнат на время <<Тихих часов>> забирает персонал отеля. К счастью, вам повезло и вы с друзьями живёте на одном этаже, в последовательных комнатах с номерами от \(1\) до \(n\). Расстояние между соседними комнатами равно 5 метрам.

Вы пришли к достаточно изящной идее, которая поможет справиться со столь сложной ситуацией. За одну ночь под всеми комнатами вы проложили конвейер из \(3n\) ячеек, позволяющий перевозить посылки. Соседние ячейки, так же, как и комнаты, находятся на расстоянии 5 метров друг от друга. Ячейки конвейера с номерами от \(n + 1\) до \(2n\) находятся под комнатами друзей, ячейки с номерами от \(1\) до \(n\) – левее комнаты номер \(1\), а ячейки с номерами от \(2n + 1\) до \(3n\) – правее комнаты с номером \(n\).

В один из таких <<Тихих часов>> каждый друг отправил посылку одному другому другу. Для того, чтобы перемещать посылки, есть две кнопки: <<ВПРАВО>> и <<ВЛЕВО>>, сдвигающие конвейер на 5 метров вправо и влево соответственно.

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

Первая строка входных данных содержит одно целое число \(n\) (\(2 \le n \le 100\,000\)) — число друзей, обменивающихся посылками.

Вторая строка содержит \(n\) целых чисел \(a_i\) (\(1 \le a_i \le n, a_i \ne i\)) — номер друга, которому адресована посылка \(i\)-го из друзей.

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

Разберём пример из условия. Сначала можно 1 раз нажать кнопку <<ВПРАВО>>, после этого второй друг получит посылку от первого, а третий — от второго. После этого необходимо 2 раза нажать на кнопку <<ВЛЕВО>>, тогда второй друг получит посылку от третьего. И наконец, нужно ещё 2 раза нажать кнопку <<ВЛЕВО>>, после чего первый друг получит посылку от четвёртого. Итого потребуется 5 нажатий.

Отель представляет собой последовательность из \(n\) зданий различной высоты, построенных вплотную друг к другу. Не так давно в Отель провели кабельное телевидение, которым все теперь с удовольствием пользуются. Но есть одна проблема: на крыше \(m\)-го здания осталась куча оборудования от спутникового телевидения, которое надо с неё спустить, и вам поручили это сделать.

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

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

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

Формат входных данных
На первой строке вводится два целых числа \(n, m\) \((1 \le m \le n \le 100\,000)\) — число зданий и номер здания, на котором находится оборудование, соответственно.

Вторая строка содержит \(n\) целых чисел \(h_1, h_2, \dots, h_n\) \((1 \le h_i \le 10^9)\) — высоты зданий.

Формат выходных данных
Выведите одно целое число — минимальный размер лестницы, достаточной для демонтажа.

 

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

image

Шкипер Баг ужасно страдает от морской болезни. Единственное спасение — зелье «Штиль», которое продаётся в лавках на островах архипелага. На n островах цены разные: в i-м порту бутылка стоит xi дублонов.

Каждый раз, когда «Нулевой указатель» заходит в порт, у Шкипера Бага с собой разная сумма — зависит от того, не украл ли корабельный кот монеты из кармана. Всего таких заходов будет q. Для каждого захода Шкипер Баг хочет заранее знать: в скольких портах архипелага он смог бы купить зелье, имея столько дублонов?

Формат входных данных
Первая строка: n (1≤n≤100 000) — количество портов.
Вторая строка: n чисел  xi​ (1≤xi≤100 000) — цены на зелье.
Третья строка: q (1≤q≤100 000) — количество заходов в порт.
Следующие q строк: число mi​ (1≤mi≤109) — дублоны Шкипера Бага при i-м заходе.

Формат выходных данных
q чисел — для каждого захода количество портов, где хватит денег.


Примечание: 
При 1 дублоне ни одна лавка недоступна. При 8 — можно купить в 4 лавках (цены 2, 3, 4, 7). При 3 — только одна лавка (цена 2). При 100 дублонах — все пять.

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