Теория:

Характеристика задания

1. Тип ответа: запись числовых значений.
 
2. Структура содержания: умение создавать собственные программы (\(20\)–\(40\) строк) для анализа числовых последовательностей.
 
3. Уровень сложности задания: высокий.
 
4. Примерное время выполнения: \(40\) минут.
 
5. Количество баллов: \(2\).
 
6. Требуется специальное программное обеспечение: да.
 
7. Задание: умение анализировать числовые последовательности.
 
Пример задания
 
Дана последовательность из \(N\) натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие, что сумма элементов каждой из них кратна \(k = 43\). Найди среди них подпоследовательность с максимальной суммой, определи её длину.
 
Если таких подпоследовательностей найдено несколько, в ответе укажи количество элементов самой короткой из них.
 
Входные данные
 
Даны два входных файла (27_A.txt и 27_B.txt), каждый из которых содержит в первой строке количество чисел \(N~(1 ≤ N ≤ 10~000~000)\). Каждая из следующих \(N\) строк содержит одно натуральное число, не превышающее \(10~000\).
 
Пример организации исходных данных во входном файле:
 
\(7\)
\(1\)
\(3\)
\(4\)
\(93\)
\(8\)
\(5\)
\(95\)
 
В ответе укажи два числа: сначала значение искомой длины для файла \(A\), затем — для файла \(B\).
 
Предупреждение: для обработки файла \(B\) не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
 
Метод, которым мы воспользуемся, — метод префиксных сумм, — заключается в том, что вычисляется сумма \(N\) с начала последовательности из \(x\) элементов, параллельно вычисляется сумма \(M\) с начала последовательности из \(y\) элементов последовательности (\(y<x\)) — эти суммы назовём префиксными. Для достижения необходимых свойств суммы искомой подпоследовательности из \(N\) вычитается \(M\).
 
План решения
 
После считывания количества элементов организуем два списка: в одном из списков Pref_s будем хранить префиксные суммы под индексом, равным остатку от деления на \(43\), а в другом Pref_l — длины префиксных сумм.
 
При считывании элемента из файла вычисляем сумму всех предшествующих ему элементов (s), остаток от деления на \(43\), проверяем, есть ли префиксная сумма с таким остатком в списке Pref_s; если нет, то записываем, если есть, то проверяем, является ли эта сумма минимальной, а её длина — максимальной, так как по условию нам нужна максимальная сумма минимальной длины. Значит, из текущей суммы нужно вычесть минимальную префиксную сумму максимальной длины.
 
Программа
 
демо22.png
Рис. \(1\). Программа
 
Ответ: \(27\)_A — \(185\), \(27\)_B — \(844158\).
 
Пример задания

Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на \(N\) непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной \(H\) и \(W\), причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно  параллельны  координатным  осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников. Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных его точек минимальна. Для каждого кластера гарантируется единственность его центра.
 
Расстояние между двумя точками на плоскости \(A(x1, y1)\) и \(B(x2, y2)\) вычисляется по формуле:
 
В файле_А.txt хранятся координаты точек двух кластеров, где \(H = 6\) и \(W = 4,5\) для  каждого  кластера.  В  каждой  строке  записана  информация о расположении на карте одной звезды: сначала координата \(x\), затем координата \(y\). Известно, что количество точек не превышает \(1000\).
В файле_Б.txt хранятся координаты точек трёх кластеров, где \(H = 6\), \(W = 5\) для каждого кластера. Известно, что количество точек не превышает \(10 000\). Структура хранения информации в файле Б аналогична структуре в файле А. Известно, что в файле Б имеются координаты ровно трёх «лишних» точек, представляющих аномалии, которые возникли в результате помех при передаче данных. Эти три точки не относятся ни к одному из кластеров, их учитывать не нужно. Для файла А определи координаты центра каждого кластера, затем найди  два числа: \(P(x)\) — минимальную из абсцисс центров кластеров и \(P(y)\) — минимальную из ординат центров кластеров. Для файла Б определи координаты центра каждого кластера, затем найди два числа: \(Q1\) — расстояние между центрами кластеров с минимальным и максимальным количеством точек и \(Q2\) — максимальное расстояние от центра кластера до точки этого же кластера среди всех кластеров. Гарантируется, что во всех кластерах количество точек различно. В ответе запиши четыре числа: в первой строке — сначала целую часть абсолютной величины произведения \(P(x) × 10 000\), затем целую часть абсолютной величины произведения \(P(y\) × 10 000\); во второй строке — сначала целую часть произведения \(Q1× 10 000\), затем целую часть произведения \(Q2× 10 000\). Возможные данные одного из файлов проиллюстрированы графиком.
 
Скриншот-20260330-000947.jpg
 
Рассмотрим, как сделать задание из демоверсии на языке программирования Python. Ответы для файлов А и Б будут отличаться лишь распределением на кластеры, поэтому приведём решение только для файла А.
 
Скриншот-20260330-002510.jpg