Информатика. ЕГЭ

Задание 27. Информатика. ЕГЭ. Поляков-7644

Просмотры: 1060
Изменено: 1 февраля 2025

(В. Шубинкин) В ходе эксперимента были зафиксированы очаги радиации. Чтобы изучить данное явление, решили провести кластеризацию источников излучения. Кластер – это набор источников (точек) на графике, лежащий внутри прямоугольника высотой \(H\) и шириной \(W\). Каждая точка обязательно принадлежит только одному из кластеров. Истинный центр кластера, или центроид, – это одна из точек на графике, сумма расстояний от которой до всех остальных точек кластера минимальна. Расстояние между двумя точками \(A(x_1, \, y_1)\) и \(B(x_2, \, y_2)\) вычисляется по формуле: $$ d(A, \, B) = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2} $$ Аномалиями назовём совокупности из не более чем \(10\) точек, каждая из которых находится на расстоянии более одной условной единицы от точек кластеров. Аномалии в расчётах не учитываются. Даны два входных файла (файл A и файл Б). В файле A хранятся данные о точках двух кластеров. В каждой строке записана информация о расположении одной точки: сначала координата \(x\), затем координата \(y\) (в условных единицах). Известно, что количество точек не превышает \(1000\). В файле Б той же структуры хранятся данные о трёх кластерах. Известно, что количество точек не превышает \(10~000\). Структура хранения информации о точках в файле Б аналогична файлу А. Возможные данные одного из файлов иллюстрированы графиком. Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: \(P_x\) – среднее арифметическое абсцисс центров кластеров, и \(P_y\) – среднее арифметическое ординат центров кластеров. В ответе запишите четыре числа: в первой строке сначала целую часть произведения \(P_x \times 100~000\), затем целую часть произведения \(P_y \times 100~000\) для файла А, во второй строке – аналогичные данные для файла Б.

Решение:

Точечная диаграмма, построенная для файла А в табличном процессоре, имеет вид

Видно, что один кластер находится в прямоугольника \(-3.5 < x < 0.5\), \(0.5 < y < 4.5\). Второй лежит в прямоугольнике \(0.5 < x < 3.5\), \(-2.5 < y < 0.5\). Остальные точки — это аномалии.

Точечная диаграмма для файла Б, построенная в табличном процессоре, имеет вид

Видим, что кластер под номером \(0\) лежит в прямоугольнике \(-3.5 < x < -0.5\), \(-3.5 < y < 0.5\). Кластер под номером \(1\) находится в прямоугольнике \(-1.5 < x < 3.5\), \(1.5 < y < 4.5\). Кластер под номером \(2\) лежит в прямоугольнике \(0.5 < x < 5.5\), \(-3.5 < y < 1.5\).

Python (3.10+)


def which_cluster(point, task):
    x, y = point
    match task:
        case 0:
            if -3.5 < x < 0.5 and 0.5 < y < 4.5:
                return 0
            elif 0.5 < x < 3.5 and -2.5 < y < 0.5:
                return 1
            else:
                return -1
        case 1:
            if -3.5 < x < -0.5 and -3.5 < y < 0.5:
                return 0
            elif -1.5 < x < 3.5 and 1.5 < y < 4.5:
                return 1
            elif 0.5 < x < 5.5 and -3.5 < y < 1.5:
                return 2
            else:
                return -1

def dist(point1, point2):
    x1, y1 = point1
    x2, y2 = point2
    return ((x1 - x2)**2 + (y1 - y2)**2)**0.5

base = ''
files = ['27A.txt', '27B.txt']
clusters = [2, 3]

for t in [0, 1]:
    fd = open(base + files[t])
    fd.readline()
    data = [[], [], []]
    for line in fd:
        x, y = map(float, line.replace(',', '.').split())
        cl = which_cluster([x, y], t)
        if cl > -1:
            data[cl].append([x, y])
    centers = []
    for k in range(clusters[t]):
        dm = 10**100
        c = [0, 0]
        for p in data[k]:
            d = sum(dist(p, pt) for pt in data[k])
            if d < dm:
                dm = d
                c = p
        centers.append(c)
    px = int(sum(c[0] for c in centers) / clusters[t] * 100000)
    py = int(sum(c[1] for c in centers) / clusters[t] * 100000)
    print(px, py)

Ответ:
\(19615 \,\, 69089\)
\(67799 \,\, 17717\)

Новый тренажёр-эмулятор
Станции КЕГЭ

Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене

Новое видео
Методы решения задания 16 ЕГЭ по Информатике «Вычисление рекуррентных выражений»
Поддержать автора сайта!
​ Поддержите автора сайта, если материалы, размещённые здесь, оказались вам полезны.
Расписание пробников Статграда в 2026/27 учебном году
Информатика ОГЭ 9 класс
  1. 13 октября 2026 года
  2. 3 декабря 2026 года
  3. 21 января 2027 года
  4. 19 февраля 2027 года
  5. 23 марта 2027 года
  6. 27 апреля 2027 года
Математика ОГЭ 9 класс
  1. 23 сентября 2026 года
  2. 1 декабря 2026 года
  3. 22 января 2027 года
  4. 3 марта 2027 года
  5. 14 апреля 2027 года
Физика ОГЭ 9 класс
  1. 19 октября 2026 года
  2. 10 декабря 2026 года
  3. 29 января 2027 года
  4. 17 марта 2027 года
  5. 22 апреля 2027 года
Математика ЕГЭ 10 класс
  1. 3 февраля 2027 года
  2. 11 мая 2027 года
Информатика ЕГЭ 11 класс
  1. 22 октября 2026 года
  2. 15 декабря 2026 года
  3. 26 января 2027 года
  4. 2 марта 2027 года
  5. 13 апреля 2027 года
Математика ЕГЭ 11 класс
  1. 30 сентября 2026 года
  2. 17 декабря 2026 года
  3. 9 февраля 2027 года
  4. 16 марта 2027 года
  5. 21 апреля 2027 года
Физика ЕГЭ 11 класс
  1. 14 октября 2026 года
  2. 16 декабря 2026 года
  3. 4 февраля 2027 года
  4. 12 марта 2027 года
  5. 9 апреля 2027 года