Информатика

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

Биолог провёл эксперимент: на \(n\) чашках Петри засеяны бактерии \(m\) различных штаммов. В каждой ячейке матрицы — количество выросших колоний. Вычислите:

  • суммы по строкам \(r_i = \displaystyle\sum_{j} a_{ij}\) — общее число колоний на каждой чашке;

  • суммы по столбцам \(c_j = \displaystyle\sum_{i} a_{ij}\) — общее число колоний каждого штамма.

Формат ввода

Первая строка: \(n\) и \(m\) (\(1\le n,m\le 500\)). Следующие \(n\) строк по \(m\) целых чисел.

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

Строка 1: \(n\) чисел — суммы по строкам. Строка 2: \(m\) чисел — суммы по столбцам.

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

3 4
12 5 8 3
7 15 2 10
4 6 11 9

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

28 34 30
23 26 21 22

Подсказка. Метод np.sum(axis=...): axis=1 — суммы по строкам, axis=0 — по столбцам.

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

При обработке результатов биохимического эксперимента часто требуется привести данные к единому масштабу. Выполните 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средняяВойти и решать

В биохимической лаборатории измерена концентрация глюкозы (ммоль/л) в серии проб крови. Дан массив из \(n\) вещественных чисел. С помощью NumPy вычислите и выведите пять статистических характеристик.

Формат ввода

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

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

Пять строк вида метка: значение, значение округлено до 4 знаков после запятой:

  • min — минимальное значение;

  • max — максимальное значение;

  • mean — среднее арифметическое: \(\bar{a}=\dfrac{1}{n}\displaystyle\sum_{i=1}^{n}a_i\);

  • median — медиана;

  • std — стандартное отклонение: \(\sigma=\sqrt{\dfrac{1}{n}\displaystyle\sum_{i=1}^{n}(a_i-\bar{a})^2}\).

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

6
4.2 5.1 3.8 6.0 5.5 4.9

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

min: 3.8000
max: 6.0000
mean: 4.9167
median: 5.0000
std: 0.7426
✓ 13✗ 30600лёгкаяВойти и решать

Дана строка ДНК, состоящая из символов 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.

На льдине в ряд стоят n пингвинов. У каждого пингвина свой вес — уникальное целое число от 1 до n.
На каждом ходе каждый пингвин, чей вес больше, чем у соседа справа, сталкивает соседа справа в воду. Обратите внимание, что пингвин может столкнуть соседа и сам быть столкнут на одном и том же ходе.
Вам дано исходное расположение пингвинов на льдине. Подсчитайте, сколько ходов пройдёт до момента, после которого на льдине наступит покой и больше никто никого не столкнёт.

Формат входных данных
В первой строке записано целое число n — количество пингвинов (1 ≤ n ≤ 105). Во второй строке записан список из n различных целых чисел от 1 до n, включительно — веса пингвинов на льдине слева направо. Числа разделяются пробелами.

Формат выходных данных
Выведите одно число — количество ходов, после которых на льдине наступит покой.

 
Примечание

В первом примере ряд пингвинов меняется так: [10 9 7 8 6 5 3 4 2 1]  →  [10 8 4]  →  [10]. Итого, есть два хода.

В расписании аэропорта записано время отправления каждого рейса (часы и минуты). Ночным считается рейс, отправляющийся с 23:00 до 5:59 включительно. Определите, есть ли в расписании хотя бы один ночной рейс.

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

Каждая строка содержит два целых числа: часы и минуты отправления рейса (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «-1 -1».

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

«YES», если ночной рейс есть, или «NO» в противном случае.

Охранник записывает время прихода каждого сотрудника на работу (часы и минуты). Определите время прихода самого раннего сотрудника.

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

Каждая строка содержит два целых числа: часы и минуты прихода одного сотрудника (5 ≤ часы ≤ 12, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0».

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

Два числа через пробел — часы и минуты прихода самого раннего сотрудника.

В расписании записаны моменты начала каждого урока (часы и минуты). Уроки идут в хронологическом порядке. Перерывом считается промежуток между концом одного урока и началом следующего. Каждый урок длится ровно 45 минут. Определите количество перерывов длительностью более 30 минут.

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

Каждая строка содержит два целых числа: часы и минуты начала урока (0 ≤ часы ≤ 20, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0». Она не является временем урока. Гарантируется, что уроков не менее двух.

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

Одно число — количество перерывов длительностью строго более 30 минут.

Рабочий выполняет задания в течение смены. Длительность каждого задания фиксируется в часах и минутах. Определите суммарное рабочее время.

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

Каждая строка содержит два целых числа: часы и минуты длительности одного задания (0 ≤ часы ≤ 8, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0». Она не является заданием.

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

Два числа через пробел — суммарное рабочее время в часах и минутах.

На экзамене фиксируется время выполнения каждого задания учеником в часах и минутах. Определите среднее время выполнения задания.

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

В первой строке подаётся количество заданий N. В каждой из следующих N строк — два целых числа: часы и минуты, затраченные на одно задание (0 ≤ часы ≤ 3, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — среднее время в часах и минутах (минуты округлить до целого вниз).

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

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

В первой строке подаётся количество событий N (N ≥ 2). В каждой из следующих N строк — два целых числа: часы и минуты начала события (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — разница в часах и минутах между самым поздним и самым ранним событием.

Учитель записывает фактическую длительность каждого проведённого урока в часах и минутах. Стандартная длительность урока — 45 минут. Определите, сколько уроков длились дольше стандартного времени.

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

В первой строке подаётся количество уроков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности урока (0 ≤ часы ≤ 2, 0 ≤ минуты ≤ 59).

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

Одно число — количество уроков, длившихся строго дольше 45 минут.

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

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

В первой строке подаётся количество совещаний N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного совещания (0 ≤ часы ≤ 8, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — длительность самого длинного совещания в часах и минутах.

Оператор связи фиксирует длительность каждого телефонного разговора в часах и минутах. Определите суммарную длительность всех разговоров.

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

В первой строке подаётся количество звонков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного звонка (0 ≤ часы ≤ 10, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — суммарное время в часах и минутах.

Мурмурградск — город котиков! И, как и во всех таких городах, в Мурмурградске у каждого котика есть собственный дом, а у каждого домика — уникальный номер. Котики не любят мочить лапки, поэтому некоторые дома соединены специальными котодорожками, полностью защищенными от воды.

Многолетние исследования показали следующие примечательные черты Мурмурградска:

1. Дома и котодорожки представляют собой дерево, где дома — вершины, а котодорожки — ребра.

2. Между двумя домами есть котодорожка тогда и только тогда, когда котики в этих домах дружат.

Кошачий мэр решил, что для развития общей сплоченности каким-то котикам нужно будет поменять место жительства. При этом мэру важно, чтобы у всех оставалось свое личное пространство, поэтому никакие два котика не должны жить в одном доме после переезда. Мэр также понял, что, во избежание всеобщего хаоса, надо добавить в план немного стабильности: жители домика номер \(1\) должны остаться на месте.

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

У мэра слишком много дел, поэтому за помощью он обратился к вам! Он поставил перед вами следующую задачу: посчитать, сколько существует планов переезда, удовлетворяющих и критериям мэра, и критериям населения.

Так как это число может быть очень большим, необходимо посчитать его по модулю \(998244353\).

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

Каждый набор данных состоит из нескольких строк. Первая строка набора данных содержит одно целое число \(n\) — количество вершин в дереве. Далее идут \(n - 1\) строк, каждая содержит два целых числа \(u\) и \(v\) (\(1 \leq u, v \leq n\), \(u \neq v\)) — две вершины, которые соединены ребром.

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

Формат выходных данных
Для каждого набора входных данных выведите в отдельной строке одно целое число — количество подходящих планов переезда по модулю \(998244353\).

 

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

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

Формат ввода

В первой строке задается количество наборов входных данных T. В этой задаче T всегда равно 1.

В первой строке каждого описания набора дано два целых числа m и k ( 1≤m≤3, 1≤k≤13 ) — число различных типов клавиш и требуемая длина различных подстрок.

В следующих m строках описываются клавиши. Каждое описание состоит из маленькой английской буквы Ci​, написанной на клавише, и числа Ti​ — количества таких клавиш. Гарантируется, что суммарное количество клавиш не превосходит 16.

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

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

Вася открыл собственный классифайд (доску объявлений). Устроен его классифайд следующим образом: для каждого типа товара продавец с номером \(i\) может выставить на продажу только одну единицу товара и заранее указывает минимальную цену \(S_i\), за которую он готов его продать. Каждый покупатель может купить только одну единицу товара, покупатель с номером \(j\) указывает максимальную цену \(B_j\), за которую он готов купить товар. Раз в день Вася собирает все заявки и распределяет покупателей и продавцов, которые заключат сделку и по какой цене. При этом сделка между продавцом \(i\) и покупателем \(j\) может состояться только если \(S_i \le B_j\) по любой цене от \(S_i\) до \(B_j\) (цену назначает Вася).

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

Формат входных данных
В первой строке задается число наборов тестовых данных \(T\). В этой задаче \(T\) всегда равно 1.

В первой строке описания каждого набора записано число \(N\) (\(1 \le N \le 10\)) — количество продавцов.

В следующей строке записано \(N\) чисел \(S_i\) (\(1 \le S_i \le 100\)).

В следующей строке записано число \(M\) (\(1 \le M \le 10\)).

В следующей строке записано \(M\) чисел \(B_i\) (\(1 \le B_i \le 100\)).

Описания наборов отделяются друг от друга пустой строкой.

Формат выходных данных
Для каждого набора входных данных выведите одно число — максимальную суммарную стоимость проданных товаров.

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

Дана строка, задающая полином \(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)).

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

Формат ввода (CSV, stdin). Первая строка — заголовок: name,math,physics,informatics,english Далее строки с данными (\(2 \le n \le 1000\)).

Формат вывода. По одному имени на строке (лексикографический порядок).

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

name,math,physics,informatics,english
Alice,90,85,95,80
Bob,60,55,65,50
Charlie,75,80,70,85
Diana,40,45,35,50

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

Alice
Charlie

Общее среднее \(\approx 66.25\).

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

Условие. Дана матрица \(A\) размера \(n \times m\). Вычислите суммы по строкам \(r_i = \sum_{j} a_{ij}\) и суммы по столбцам \(c_j = \sum_{i} a_{ij}\).

Формат ввода. Первая строка: \(n\) и \(m\) (\(1 \le n, m \le 500\)). Следующие \(n\) строк по \(m\) целых чисел.

Формат вывода. Строка 1: \(n\) чисел — суммы по строкам. Строка 2: \(m\) чисел — суммы по столбцам.

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

3 3
1 2 3
4 5 6
7 8 9

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

6 15 24
12 15 18
✓ 18✗ 8600лёгкаяВойти и решать
Поделиться
Класснуть