Статья Автор: Лебедев Дмитрий Алексеевич

Задание 27_Пишем программу для 2026

Формулировка задания КЕГЭ 95469 (2026. ДВ)

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

Истинный центр кластера (центроид) — это одна из звёзд кластера, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Под расстоянием понимается евклидово расстояние между точками A(x1, y1) и B(x2, y2):

d(A, B) = sqrt( (x1 − x2)^2 + (y1 − y2)^2 )

В файле A хранятся данные о звёздах двух кластеров, где H = 6.5, W = 4.5 для каждого кластера; количество звёзд не превышает 1000. В файле B хранятся данные о звёздах трёх кластеров, где H = 5, W = 4 для каждого кластера; количество звёзд не превышает 10000. В каждой строке файла записана информация об одной звезде: сначала координата x, затем координата y (значения в условных единицах). Структура файла B аналогична файлу A.

Известно, что в каждом файле имеются координаты ровно трёх «лишних» точек, представляющих аномалии (помехи при передаче данных). Эти точки не относятся ни к одному кластеру, их учитывать не нужно.

Для файла A определите координаты центра каждого кластера, затем найдите два числа: Px — минимальную из абсцисс центров кластеров и Py — минимальную из ординат центров кластеров. Для файла B определите координаты центра каждого кластера, затем найдите два числа: Q1 — минимальное расстояние между центрами кластеров и Q2 — максимальное расстояние между центрами кластеров.

В ответе запишите четыре числа: абсолютную величину целой части произведения Px × 10000, затем абсолютную величину целой части произведения Py × 10000, затем абсолютную величину целой части произведения Q1 × 10000, затем абсолютную величину целой части произведения Q2 × 10000.



Последовательность решения
  1. Создаем модель решения сразу для двух файлов
    def main(kz) :
       pass
    for kz in ['A','B'] :
       main(kz)
    все остальное пишем в main или отдельными def
  2. Определяем имя файла, считываем данные в список.
    Так как есть три аномальные точки, то сортируем (оказалось, что достаточно простой сортировки)
    Выводим первых 5 и последних 5 - видим, что анамольные в начале и конце.
    Вырезаем нужный кусок, выводим ограничения (def razmah)
  3.  Определяем разбиение на кластеры: для A по ординате, для B по абциссе (левый, правый, остальное)
    (def dot2claster) Выводим границы и проверяем визуально 
  4. Находим центры кластеров (с помощью def dist, def srast, def center)  Выводим границы и центр
  5. Читаем вопросы к файлу A и файлу B. Так как все значения положительные, то игнорируем абсолютное значение целой части
    ( поскольку для числа -3,5 это 4, а не 3) и выводим ответ.
При решении файл не открывался в табличном редакторе и не строилась диаграмма
 
Attached files
27A_95469.txt
27B_95469.txt
Печать