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

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

На испытательном стенде расположена сетка из \(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
5 12 8
3 7 15
10 6 4

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

25 25 20
18 25 27

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

✓ 11✗ 6600лёгкаяВойти и решать

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

✓ 13✗ 29600лёгкаяВойти и решать

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

Формат ввода

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

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

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

  • min — минимум;

  • max — максимум;

  • mean — среднее: \(\bar{a}=\frac{1}{n}\sum_{i=1}^{n}a_i\);

  • median — медиана;

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

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

5
1.98 2.02 2.00 1.95 2.05

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

min: 1.9500
max: 2.0500
mean: 2.0000
median: 2.0000
std: 0.0341
✓ 12✗ 24600лёгкаяВойти и решать

Дано алгебраическое выражение со скобками (полином степени не выше 3) и целое число \(x_0\). Выполните два действия с помощью SymPy:

  1. Раскройте скобки — приведите выражение к стандартному виду полинома (без скобок, слагаемые по убыванию степени).

  2. Вычислите значение выражения при \(x=x_0\).

Формат ввода

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

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

Ровно 2 строки:

expanded: <выражение>
value: <число>

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

(x + 3)**2
2

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

expanded: x**2 + 6*x + 9
value: 25

Разбор. \((x+3)^2 = x^2+6x+9\). Значение при \(x=2\): \(4+12+9=25\).

Подсказки. Для разбора строки: parse_expr(s, ...). Раскрытие скобок: expand(expr). Подстановка: expr.subs(x, x0).

Биолог провёл эксперимент: на \(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.

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

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

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

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

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

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

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

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

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

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

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

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

Каждая строка содержит два целых числа: часы и минуты длительности одного задания (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).

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

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

Дана строка, задающая полином \(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
✓ 19✗ 12600лёгкаяВойти и решать

Условие. Дан массив из \(n\) чисел и размер окна \(k\). Вычислите скользящий максимум: \(M_i = \max(a_i, a_{i+1}, \ldots, a_{i+k-1}), \quad i = 0, 1, \ldots, n-k.\) 

Формат ввода. Первая строка: два целых числа \(n\) и \(k\) (\(1 \le k \le n \le 10^5\)). Вторая строка: \(n\) целых чисел (\(-10^9 \le a_i \le 10^9\)).

Формат вывода. Одна строка: \(n - k + 1\) целых чисел, разделённых пробелами.

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

7 3
2 1 5 3 6 4 8

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

5 5 6 6 8
✓ 17✗ 14700средняяВойти и решать
Поделиться
Класснуть