Вверх
Полный вариант

Вариант 9

Решайте задания в удобном темпе. Ответы сохраняются в браузере, а результат появится после отправки теста.

1. На рисунке схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о протяжённости каждой из этих дорог (в километрах).
Задание ЕГЭ по информатике
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова сумма протяжённостей дорог из пункта Б в пункт В и из пункта Г в пункт Д. В ответе запишите целое число.

Верный ответ: 20

Сначала сопоставим вершины по количеству дорог, выходящих из каждой из них. На графе пункт К соединён со всеми шестью остальными пунктами. В таблице единственный пункт с шестью связями — П5, значит, К соответствует П5.

Если мысленно убрать К и П5, оставшиеся пункты образуют одну цепочку. На графе это А—Б—В—Г—Д—Е, а в таблице — П3—П4—П7—П6—П2—П1. Цепочку можно читать и в обратном направлении, но нужные дороги в обоих случаях соответствуют тем же двум рёбрам:

Б—В ↔ П4—П7, длина 7;
Г—Д ↔ П6—П2, длина 13.

Требуется сумма протяжённостей, поэтому складываем 7 и 13.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18843.

2. Логическая функция F задаётся выражением.

(¬x∧y∧z)∨(¬x∧y∧¬z)∨(¬x∧¬y∧¬z)

На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F истинна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.
Задание ЕГЭ по информатике
Все строки таблицы различны.

Верный ответ: yxz

Каждое слагаемое дизъюнкции задаёт один истинный набор:
• ¬x ∧ y ∧ z — набор (x, y, z) = 011;
• ¬x ∧ y ∧ ¬z — набор 010;
• ¬x ∧ ¬y ∧ ¬z — набор 000.

Во всех трёх наборах x = 0, поэтому столбец, состоящий только из нулей, — второй — соответствует x.
Значения y в перечисленных наборах равны 1, 1, 0, а в таблице первый столбец содержит те же значения в обратном порядке строк: 0, 1, 1. Значения z равны 1, 0, 0; им соответствует третий столбец 0, 0, 1.
Порядок строк в таблице не важен: важно, что наборы столбцов полностью совпадают с тремя наборами, описанными формулой.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19141.

3. В файле приведён фрагмент базы данных «Родственники» о родственных отношениях между людьми. База данных состоит из двух таблиц. Таблица «Люди» содержит записи о людях - Фамилия ИО, пол («м» или «ж») и город рождения. Таблица «Родственные связи» содержит информацию о родительских связях - ID родителя из таблицы «Люди» и ID ребёнка из той же таблицы. На рисунке приведена схема базы данных.
Задание ЕГЭ по информатике
Известно, что 72 мужчины из данной таблицы в своих семьях имеют одинаковое число детей. Используя информацию из приведённой базы данных, определите, сколько детей в семье у каждого из указанных 72 мужчин. В ответе запишите только число.

Верный ответ: 2

Для каждого мужчины из таблицы «Люди» считаем количество строк, в которых его ID указан в поле ID_родителя. Так получаем распределение мужчин-родителей по числу детей:

27 мужчин имеют одного ребёнка;
72 мужчины — двух детей;
1 мужчина — троих детей;
14 мужчин — четверых детей.

По условию требуется группа, состоящая ровно из 72 мужчин. Этой группе соответствует значение 2.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19088.

4. Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, Ж, З, решили использовать неравномерный двоичный код, удовлетворяющий обратному условию Фано: никакое кодовое слово не является окончанием другого кодового слова. Для букв А, Б, В, Г использовали соответственно кодовые слова 00, 010, 011, 110. Укажите кратчайшее возможное кодовое слово для буквы Д, при котором можно подобрать допустимые слова и для букв Е, Ж, З. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Верный ответ: 01

Для обратного условия Фано разворачиваем все слова и строим обычное префиксное дерево. Известные коды превращаются в 00, 010, 110 и 011.

Одноразрядный код невозможен: обе начальные ветви уже содержат известные слова. Среди слов длины 2 ветвь 00 занята, 01 является началом кодов 010 и 011, а 11 — началом кода 110. Свободна только ветвь 10.

Если назначить её букве Д, для трёх остальных букв остаётся ветвь 111, которую можно дополнительно разделить, например, на 1110, 11110 и 11111. После обратного разворота свободная ветвь 10 соответствует исходному коду 01.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19143.

5. Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. В конец двоичной записи добавляются две первые цифры этой записи в обратном порядке.
3. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 11. Алгоритм работает следующим образом:

1. Двоичная запись числа N: 1011.
2. В конец записи добавляются цифры 01 — первые две цифры в обратном порядке (сначала вторая, затем первая), получается 101101.
3. На экран выводится число 45.

При каком наименьшем исходном N результат на экране автомата будет больше 90?

Верный ответ: 23

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

Для N, способного дать результат больше 90, двоичная запись имеет не менее двух разрядов и начинается либо с 10, либо с 11. После перестановки первые две цифры превращаются соответственно в 01 или 11, то есть к 4N добавляется 1 или 3.

Для N < 22 получаем R ≤ 4 · 21 + 3 = 87, поэтому результат больше 90 невозможен.
N = 22 = 101102: дописываем 01, получаем 10110012 = 89 — не подходит.
N = 23 = 101112: дописываем 01, получаем 10111012 = 93.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18928.

6. Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует три команды: Вперёд n (где n - целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Направо m (где m - целое число), вызывающая изменение направления движения на m градусов по часовой стрелке; Опусти, принуждающая Черепаху опустить хвост.

Запись Повтори k [Команда1 Команда2... КомандаS] означает, что последовательность из S команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Направо 30 Повтори 10 [Вперёд 30 Направо 60 Вперёд 30 Направо 120]
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Верный ответ: 750

За два повторения блока Черепаха строит четыре стороны и возвращается в начальную точку. Получается ромб со стороной 30 и острым углом 60°; остальные повторения только обводят ту же границу.

Его можно задать вершинами (0; 0), (15; 15√3), (45; 15√3), (30; 0). Целые уровни y внутри фигуры — от 1 до 25, поскольку 15√3 ≈ 25,98. На каждом таком уровне левая граница имеет абсциссу y/√3, а правая — 30 + y/√3.

Между этими двумя нецелыми числами находится ровно 30 целых значений x. Поэтому внутренних точек 25 · 30 = 750.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 21204.

7. Автоматическая фотоловушка в заповеднике, оснащённая датчиком движения, делает цветные фотографии проходящих мимо леопардов. Размер каждой фотографии 128×2048 пикселей, при этом используется палитра из 2048 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по несколько штук, а затем передаются в центр охраны природы со скоростью передачи данных 81 920 бит/с. Каково максимально возможное количество снимков в одном пакете, если на передачу одного пакета отводится не более 600 секунд?
В ответе запишите целое число.

Верный ответ: 17

Подсказка: 2048 цветов = 211, значит глубина цвета 11 бит на пиксель.
Объём одного снимка: 128·2048·11 бит.
За 600 секунд можно передать 81920·600 бит.
Количество снимков: ⌊81920·600 / (128·2048·11)⌋ = 17.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 25508.

8. Карина составляет 7-буквенные коды из букв Л, Е, Р, У, С, А, М. Каждую букву нужно использовать ровно один раз, при этом нельзя ставить подряд две гласные или две согласные. Сколько различных кодов может составить Карина?

Верный ответ: 144

Среди данных букв три гласные — Е, У, А — и четыре согласные — Л, Р, С, М. Чтобы две буквы одного типа не оказались рядом, типы букв должны чередоваться.

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

Четыре согласные можно переставить на их местах 4! способами, а три гласные — 3! способами. Число кодов равно 4! · 3! = 24 · 6 = 144.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19174.

9. Откройте файл электронной таблицы, содержащей вещественные числа — результаты ежечасного измерения температуры воздуха на протяжении трёх месяцев. Определите, сколько дней в июне средняя температура с 19:00 до 22:00 была выше средней температуры с 05:00 до 08:00 не менее чем на 5 градусов. В ответе запишите только количество таких дней.

Верный ответ: 10

Вечерний промежуток 19:00–22:00 находится в столбцах U:X, а утренний промежуток 05:00–08:00 — в G:J.

Во вспомогательной ячейке Z2 используйте:
=ЕСЛИ(И(МЕСЯЦ(A2)=6;СРЗНАЧ(U2:X2)-СРЗНАЧ(G2:J2)>=5);1;0)

Сначала отдельно вычисляются два средних значения, затем из вечернего среднего вычитается утреннее. Проверка «не менее чем на 5 градусов» означает разность, большую или равную 5, поэтому знак строгого сравнения > использовать нельзя.

После протягивания до Z92 сумма столбца равна 10. Проверка месяца гарантирует, что учитываются только июньские дни.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18986.

10. С помощью текстового редактора определите, сколько раз, не считая сносок, в файле встречаются отдельные слова «долг» и «долгу» в тексте романа А. С. Пушкина «Капитанская дочка». Регистр букв не учитывайте. Другие формы и слова, содержащие эти сочетания букв, учитывать не следует. В ответе укажите только число.

Верный ответ: 11

Нужно посчитать две конкретные словоформы, поэтому выполняем два поиска с отключённым учётом регистра и с параметром «только слово целиком».

Отдельное слово «долг» встречается 5 раз, а отдельное слово «долгу» — 6 раз. Складываем результаты: 5 + 6 = 11.

Поиск по части слова «долг» дал бы лишние совпадения: «долго», «долгом», «долга», «долговременное» и другие слова. Именно поэтому важно искать каждую требуемую форму как целое слово.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18852.

11. При регистрации на сервере каждый пользователь получает персональный код, состоящий из двух частей. Первая часть содержит 12 символов, каждый из которых может быть одной из 26 заглавных латинских букв. Вторая часть содержит 7 десятичных цифр. Все символы в пределах одной части кодируют одинаковым минимально возможным для этой части количеством бит, а для кода в целом выделяется минимально возможное целое количество байт. Запись в базе данных содержит персональный код и дополнительную информацию о пользователе. Для хранения данных о 64 пользователях потребовалось 2560 байт. Сколько байт выделено для хранения дополнительной информации об одном пользователе? В ответе запишите только целое число — количество байт.

Верный ответ: 29

Две части кода используют разные алфавиты, поэтому их размеры считаются отдельно.

Для 26 букв требуется 5 бит на символ. Первая часть из 12 букв занимает:
12 · 5 = 60 бит.
Для 10 цифр требуется 4 бита на символ. Вторая часть из 7 цифр занимает:
7 · 4 = 28 бит.

Весь код содержит 60 + 28 = 88 бит, то есть ровно 11 байт.

На одну запись приходится 2560 : 64 = 40 байт. После вычитания 11 байт персонального кода на дополнительные сведения остаётся 40 − 11 = 29 байт.

Складывать 26 и 10 и кодировать все позиции шестью битами нельзя: по условию буквенная и цифровая части кодируются раздельно.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19177.

12. Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки. В каждой ячейке находится ровно один символ из алфавита исполнителя: A = {a0, a1, ..., am−1}, включая специальный пустой символ a0. Время работы исполнителя делится на дискретные такты. На каждом такте головка МТ находится в одном из состояний из множества допустимых состояний Q = {q0, q1, ..., qn−1}. В начальный момент времени головка исполнителя находится в начальном состоянии q0.

На каждом такте головка обозревает одну ячейку ленты, называемую текущей ячейкой. За один такт исполнитель выполняет одну команду программы: записывает в текущую ячейку указанный символ, затем перемещает головку в соседнюю ячейку слева или справа либо оставляет её на месте. Команда с символом S завершает работу. Если работа не завершена, головка переходит в указанное командой состояние.

Программа работы исполнителя МТ задаётся в табличном виде.
a0a1...am−1
q0командакоманда...команда
q1командакоманда...команда
...............
qn−1командакоманда...команда
В первой строке перечислены все возможные символы в текущей ячейке ленты, в первом столбце — возможные состояния головки. На пересечении строки состояния qi и столбца символа aj находится команда, которую выполняет МТ, когда головка обозревает символ aj и находится в состоянии qi. Если пара «символ — состояние» невозможна, то клетка для команды остаётся пустой.

Каждая команда состоит из трёх элементов, разделённых запятыми: первый элемент — записываемый в текущую ячейку символ алфавита, второй элемент — один из четырёх символов L, R, N, S. Символы L и R означают сдвиг в левую или правую ячейки соответственно, N — отсутствие сдвига, S — завершение работы исполнителя МТ после выполнения текущей команды. Сдвиг происходит после записи символа в текущую ячейку. Третий элемент — новое состояние головки после выполнения команды.

Например, команда 0, L, q3 выполняется следующим образом: в текущую ячейку записывается символ 0, затем головка сдвигается в соседнюю слева ячейку и переходит в состояние q3.

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

Программа
λZ
q0λ, L, q0X, L, q1
q1λ, S, q1X, L, q1
заменяет на ленте все символы Z на X и останавливает исполнителя в первой ячейке слева от последовательности символов X.

Возможное начальное состояние исполнителя:
...λλZZZZλλ...
▲q0
Конечное состояние исполнителя после завершения выполнения программы:
...λλXXXXλλ...
▲q1
Выполните задание.
На ленте в соседних ячейках записана последовательность из 255 символов, среди которых могут быть только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами λ. В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности.

Программа работы исполнителя:
λ10
q0λ, L, q1
q1λ, R, q20, R, q21, L, q1
q2λ, S, q21, R, q21, R, q2
После выполнения программы на ленте осталось ровно 50 нулей. Определите максимально возможное число нулей в исходной последовательности.

Ответ: ____________________.

Верный ответ: 254

В состоянии q1 головка идёт справа налево. Все нули на правом конце она заменяет единицами. При встрече с первой единицей программа записывает вместо неё 0, разворачивает головку вправо и переходит в q2. Далее все ячейки справа заполняются единицами до пустой ячейки.

Итак, конечные нули исходной строки исчезают, а ближайшая к ним единица превращается в один новый ноль. Чтобы исходных нулей было максимально много, оставим в строке только одну единицу. Расположим её на 50-й позиции слева: 49 нулей слева сохранятся, сама единица станет нулём, а 205 нулей справа превратятся в единицы.

После работы останется ровно 49 + 1 = 50 нулей. При этом изначально нулями были все 255 символов, кроме одной обязательной единицы.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 25524.

13. В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.

Сеть задана IP-адресом 252.63.194.3 и маской сети 255.255.A.0, где A — некоторое допустимое для записи маски число. Определите минимальное значение A, для которого для всех IP-адресов этой сети в двоичной записи IP-адреса суммарное количество единиц в левых двух байтах не менее суммарного количества единиц в правых двух байтах.

В ответе укажите только число.

Верный ответ: 252

Байт маски не может принимать любое значение. Из-за правила «сначала единицы, затем нули» допустимы только 0, 128, 192, 224, 240, 248, 252, 254, 255. Так как требуется минимальное A, проверяем их по возрастанию.

Первые два байта во всех адресах сети фиксированы. В них суммарно 12 единиц. Значит, условие нарушится, если в правых двух байтах найдётся хотя бы 13 единиц.

При A = 248 получается сеть 252.63.192.0/21. В ней есть адрес 252.63.199.255: в его правых двух байтах 13 единиц, что больше 12, поэтому это значение A не подходит. При A = 252 сеть сужается до 252.63.192.0/22; даже у адреса 252.63.195.255, дающего максимальное количество единиц справа, их только 12. Следовательно, условие выполняется для каждого адреса этой сети.

from ipaddress import ip_network

for A in (0, 128, 192, 224, 240, 248, 252, 254, 255):
    net = ip_network(f"252.63.194.3/255.255.{A}.0", strict=False)
    ok = True
    for address in net:
        bits = f"{int(address):032b}"
        if bits[:16].count("1") < bits[16:].count("1"):
            ok = False
            break
    if ok:
        print(A)
        break
Слова «для всех IP-адресов» означают, что одного неподходящего адреса достаточно, чтобы отвергнуть текущее значение A; поэтому после первого контрпримера перебор этой сети можно прекратить.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 21659.

14. Сколько единиц содержится в двоичной записи числа (8200 − 4250 − 2180 + 275 − 31) ⋅ 4?

Верный ответ: 490

Умножение на 4 добавляет справа два нуля: все единицы лишь переходят в разряды на две позиции старше, поэтому их количество внутри скобок и во всём числе одинаково.

Преобразуем степени: 8200 = 2600, 4250 = 2500. После вычитания 2500 из 2600 единицы стоят в разрядах 500–599. Вычитание 2180 занимает из разряда 500: в разрядах 501–599 остаются 99 единиц, а разряды 180–499 дают ещё 320 единиц.

Младшая часть 275 − 31 = 275 − 25 + 1 содержит единицы в разрядах 5–74 и в разряде 0, то есть ещё 70 + 1. Блоки не пересекаются, поэтому считаем 99 + 320 + 70 + 1.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19180.

15. Для какого наименьшего целого неотрицательного числа A выражение (3x + 5y < A) ∨ (x ≥ y) ∨ (y > 8) тождественно истинно при любых целых неотрицательных x и y?

Верный ответ: 62

Чтобы второй и третий дизъюнкты были ложны, должны выполняться условия x < y и y ≤ 8. Именно среди таких пар нужно найти наибольшее значение 3x + 5y.

Выражение возрастает при увеличении x и y. Поэтому берём максимально возможное y = 8. Из условия x < y для целых неотрицательных чисел получаем максимальное x = 7.

Тогда 3x + 5y достигает значения 3 · 7 + 5 · 8 = 61. Первый дизъюнкт содержит строгое неравенство, поэтому параметр должен быть больше 61.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18938.

16. Алгоритм вычисления функции F(n) задан следующими соотношениями:

F(n) = n при n ≤ 3;
F(n) = n // 4 + F(n − 3) при 3 < n ≤ 32;
F(n) = (3 · F(n − 5)) // 2 − n // 3 при n > 32.

Здесь // обозначает деление нацело. В качестве ответа на задание выведите значение F(100).

Верный ответ: 3133

Для n > 32 аргумент в рекурсивном вызове уменьшается на 5. Поэтому F(100) зависит от F(95), затем от F(90) и так далее, пока цепочка не дойдёт до F(30), для которого уже действует вторая формула.

Ключевые значения цепочки:
F(30) = 40 → F(35) = 49 → F(40) = 60 → F(45) = 75 → F(50) = 96 → F(55) = 126 → F(60) = 169 → F(65) = 232 → F(70) = 325 → F(75) = 462 → F(80) = 667 → F(85) = 972 → F(90) = 1428 → F(95) = 2111.

На последнем шаге:
F(100) = (3 · F(95)) // 2 − 100 // 3 = 6333 // 2 − 33 = 3166 − 33 = 3133.

Скобки существенны: сначала вычисляется произведение 3 · F(n−5), затем оно делится нацело на 2. Операция // отбрасывает дробную часть, а не округляет число до ближайшего целого.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18993.

17. В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно. Найдите числа, в десятичной записи которых обязательно присутствуют все три цифры: 0, 5 и 7. Найдите количество таких чисел и минимальное из них. В ответе запишите два целых числа через пробел: сначала количество, затем минимальное число.

Верный ответ: 156 507

Число подходит, если в его десятичной записи присутствуют все три цифры: 0, 5 и 7. Порядок цифр и наличие других цифр не имеют значения. Каждая из трёх обязательных цифр должна встретиться хотя бы один раз.

Удобно преобразовать число в строку и проверить вхождение каждой цифры:

with open("zadanie_11_17.txt") as f:
    a = [int(x) for x in f]

good = []
for x in a:
    text = str(x)
    if all(digit in text for digit in "057"):
        good.append(x)

print(len(good), min(good))
Проверка через all не пропускает число, если отсутствует хотя бы одна из цифр. Например, 507 подходит, а 5007 тоже подошло бы: дополнительные и повторяющиеся цифры не запрещены. В файле таких чисел 156, минимальное — 507.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19156.

18. Исходные данные записаны в файле в виде квадратной электронной таблицы. В каждой клетке записано целое положительное число — количество монет. Робот начинает движение в левой верхней клетке и может перемещаться только вправо или вниз. Он собирает монеты во всех посещённых клетках.

Маршрут Робота должен обязательно пройти через клетку G5 и закончиться в правой нижней клетке. Определите максимальную и минимальную суммы, которые может собрать Робот. В ответе укажите сначала максимальную сумму, затем минимальную.

Верный ответ: 2024 1541

Обязательное посещение G5 позволяет разделить маршрут на два независимых участка: A1 → G5 и G5 → J10. На каждом участке применяем обычное динамическое программирование для ходов вправо и вниз: к значению клетки прибавляем максимум или минимум из результатов сверху и слева.

Для участка A1 → G5 получаются максимум 1620 и минимум 1324. Для участка G5 → J10 — максимум 1278 и минимум 1091.

В G5 записано 874. При сложении результатов двух участков это значение учитывается дважды, поэтому вычитаем его один раз:
максимум вычисляется как 1620 + 1278 − 874;
минимум — как 1324 + 1091 − 874. Вычитание обязательно, потому что G5 входит в оба участка.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 19211.

Для ответа на задания 19-21 изучите предложенный ниже текст.

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу два камня, добавить в кучу три камня или увеличить количество камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 17, 18 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 30 или больше камней.

19. В начальный момент в куче было S камней, 1 ≤ S ≤ 29.
Найдите минимальное значение S, при котором Петя не может выиграть своим первым ходом, но после любого первого хода Пети Ваня может выиграть своим первым ходом.

Верный ответ: 13

С чего начать. Здесь число S нельзя угадывать проверкой готового ответа. Решаем задачу с конца: сначала определяем, какая позиция позволит Ване закончить игру одним ходом, затем выясняем, каким первым ходом Петя мог оставить такую позицию. Петя получает S + 2, S + 3 или 2S. Чтобы Петя не выиграл сразу, необходимо 2S < 30, значит S ≤ 14. Хуже всего для Вани самый маленький результат Пети — S + 2. Из него Ваня должен суметь выиграть удвоением: 2(S + 2) ≥ 30, откуда S ≥ 13. Первое подходящее целое значение — 13; затем отдельно проверяются остальные два хода Пети.

Проверка и доказательство.
За первый ход Петя может получить S + 2, S + 3 или 2S камней. Требуется, чтобы ни один из этих ходов не завершал игру, но после каждого из них Ваня мог сразу получить не менее 30 камней.

При S = 13 возможны позиции 15, 16 и 26. Они ещё не являются выигрышными для Пети, а Ваня в каждом случае может удвоить число камней и получить соответственно 30, 32 или 52.

При S ≤ 12 Петя может добавить два камня и оставить в куче не более 14. Даже самый сильный ответ Вани — удвоение — даст не более 28 камней. Поэтому гарантированной победы Вани после любого хода Пети ещё нет. Значение 13 является первым, для которого выполняются все требования.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18888.

20. Сколько существует значений S, при которых у Пети есть выигрышная стратегия и одновременно выполняются условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня?

Верный ответ: 4

С чего начать. Это задание 20, поэтому решаем его обратным ходом.
1. Сначала отмечаем позиции, из которых игрок выигрывает за один ход.
2. Затем ищем опорную проигрышную позицию: игрок, которому досталась такая позиция, сам сразу не выигрывает, но любой его ход приводит к поражению: соперник либо выигрывает следующим ходом, либо особое правило игры сразу засчитывает поражение ходящему.
3. Начальная позиция подходит Пете, если он не может выиграть сразу, но одним ходом переводит Ваню в такую опорную позицию.

Откуда берутся проверяемые S. Из начальной позиции выписываем все формы первого хода, а затем смотрим, какие из них совпадают с опорными позициями. Для этой игры получаются:
• 13: S = 10 ходом +3 или S = 11 ходом +2;
• 14: S = 7 ходом ×2, S = 11 ходом +3 или S = 12 ходом +2;
Именно обратный переход от этих позиций, а не случайный перебор, даёт числа в ответе.

Проверка и доказательство.
Сначала найдём позиции, которые невыгодны игроку, делающему ход. Это 13 и 14 камней: после любого хода из них соперник сразу достигает 30 или больше.

Петя выигрывает вторым ходом, если первым ходом может попасть в 13 или 14, не закончив игру сразу:
S = 7: 7 × 2 = 14;
S = 10: 10 + 3 = 13;
S = 11: 11 + 2 = 13 или 11 + 3 = 14;
S = 12: 12 + 2 = 14.

Из 13 после ходов Вани получаются 15, 16 или 26; Петя удваивает и выигрывает. Из 14 получаются 16, 17 или 28; Петя удваивает 16/17 либо добавляет 2 к 28.

При S = 13 и 14 Петя уже может выиграть первым ходом, поэтому они условию не удовлетворяют. Всего остаются четыре значения.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18889.

21. Найдите два наибольших значения S, при которых одновременно выполняются два условия:
− у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
− у Вани нет стратегии, которая гарантирует ему победу первым ходом.
Значения запишите в порядке возрастания через пробел.

Верный ответ: 8 9

С чего начать. В задании 21 первым ходит Петя, а стратегию проверяем для Вани. Используем два типа позиций из предыдущих шагов:
• выигрыш за один ход — Ваня сразу достигает победной границы;
• выигрыш за два хода — Ваня переводит Петю в опорную проигрышную позицию и выигрывает после любого ответа.

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

Полный обратный просмотр даёт набор S: 8, 9. Ни одно число здесь не появляется из готового ответа: мы последовательно проверяем все разрешённые первые ходы Пети.

S = 8
• Петя: +2 → 10. Ваня не выигрывает сразу, но ходом +3 переводит игру в опорную позицию 13 и гарантирует победу своим следующим ходом.
• Петя: +3 → 11. Ваня не выигрывает сразу, но ходом +2 переводит игру в опорную позицию 13 и гарантирует победу своим следующим ходом.
• Петя: ×2 → 16. Ваня выигрывает сразу: ×2 → 32.

S = 9
• Петя: +2 → 11. Ваня не выигрывает сразу, но ходом +2 переводит игру в опорную позицию 13 и гарантирует победу своим следующим ходом.
• Петя: +3 → 12. Ваня не выигрывает сразу, но ходом +2 переводит игру в опорную позицию 14 и гарантирует победу своим следующим ходом.
• Петя: ×2 → 18. Ваня выигрывает сразу: ×2 → 36.

Проверка и доказательство.
Проверим все первые ходы Пети.

S = 8: Петя может получить 10, 11 или 16. Из 16 Ваня выигрывает сразу удвоением. Позиции 10 и 11 являются выигрышными для Вани за два хода: Ваня переводит их соответственно в 13 или 14, после чего любой ответ Пети оставляет немедленную победу.

S = 9: после ходов Пети получаются 11, 12 или 18. Из 18 Ваня выигрывает сразу, а из 11 и 12 использует стратегию второго хода через позиции 13 или 14.

Ваня не может гарантировать победу первым ходом: например, после перехода 8 → 10 или 9 → 11 сумма ещё слишком мала. Значения 8 и 9 — единственные позиции этого уровня, поэтому они же являются двумя наибольшими.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18890.

22. В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. Процесс B может начаться только после завершения процесса A. Если указано несколько зависимостей, процесс B начинает выполняться после завершения всех перечисленных процессов.
В файле информация о процессах представлена в виде таблицы. В первом столбце указан идентификатор процесса (ID), во втором — время его выполнения в миллисекундах, в третьем через разделитель «;» перечислены ID процессов, от которых зависит данный процесс. Для независимого процесса в третьем столбце указано значение 0.
Типовой пример организации данных в файле:
Задание ЕГЭ по информатике

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

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Верный ответ: 16

С чего начать. Обозначим через Ti самый ранний момент завершения процесса с ID i. Если процесс независимый, он запускается в момент 0, поэтому Ti равно его собственному времени выполнения. Если процесс зависит от нескольких предшественников, они могут работать параллельно, но новый процесс обязан дождаться самого позднего из них. Поэтому используется правило:
Ti = время процесса i + max(времена завершения всех его предшественников).
Берём максимум, а не сумму: предшественники выполняются одновременно, а не один за другим.

Независимые процессы: T1 = 7, T4 = 3, T7 = 4, T11 = 7.

Вычисляем зависимые процессы:
T2 = T1 + 3 = 10
T3 = T2 + 2 = 12
T5 = T4 + 3 = 6
T6 = T5 + 9 = 15
T8 = T7 + 4 = 8
T9 = T8 + 3 = 11
T10 = max(T5, T8) + 8 = max(6, 8) + 8 = 16
T12 = max(T9, T11) + 3 = max(11, 7) + 3 = 14.

Время завершения всей совокупности — наибольшее из найденных времён:
max(7, 10, 12, 3, 6, 15, 4, 8, 11, 16, 7, 14) = 16.

Критическая цепочка: 7 → 8 → 10. Процесс 10 ждёт процессы 5 и 8; более поздним является процесс 8. Складывать длительности всех процессов нельзя: такой способ ошибочно предполагает, что параллельного выполнения нет.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 21205.

23. Исполнитель "Двоечник" преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
       1. Возводит в квадрат
       2. Прибавить 2
       3. Умножить на 2
Сколько существует программ, для которых при исходном числе 2 результатом является число 64 и при этом траектория вычислений не содержит число 8?

Верный ответ: 99

Обозначим F(n) — число программ, которые переводят 2 в n и не проходят через 8. Число n могло получиться:
• из n − 2 командой «Прибавить 2»;
• из n / 2 командой «Умножить на 2», если n чётно;
• из √n командой «Возвести в квадрат», если n — полный квадрат.

Эти варианты нужно складывать. Даже если две разные команды переводят одно и то же исходное число в один результат, они образуют разные программы. Например, из 2 в 4 можно попасть и умножением на 2, и возведением в квадрат; вместе с путём 2→4 через «+2» это даёт F(4)=3.

Задаём F(2)=1 и F(8)=0, чтобы исключить все траектории через 8. Нечётные числа недостижимы. Последовательно получаем:
F(4)=3, F(6)=3, F(8)=0, F(12)=3, F(16)=6, F(24)=9, F(32)=18, F(36)=27, F(48)=48, F(56)=69, F(60)=81.

Для 64 складываются три возможных последнего шага: из 62 командой «+2» — 81 программа, из 32 командой «×2» — 18 программ, из 8 возведением в квадрат — 0 программ из-за запрета. Поэтому F(64)=81+18+0=99.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18946.

24. В текстовом файле находится цепочка, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры (от 1 до 9); в конце файла стоит 0. Найдите длину самой длинной подстроки, состоящей из одинаковых символов. Если в файле несколько подходящих подстрок одинаковой длины, выберите первую из них. Выведите сначала символ, из которого состоит эта подстрока, а затем через пробел — её длину.

Верный ответ: L 5

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

Во время прохода по строке храним длину текущей серии одинаковых символов. Если новый символ совпадает с предыдущим, серия продолжается и её длина увеличивается. Если символ изменился, начинается новая серия длины 1.

Кроме длины максимальной серии нужно запомнить её символ. Важная деталь: обновлять максимум следует только при строгом условии cur > best. Если использовать >=, более поздняя серия той же длины заменит первую, что противоречит условию.

Пример программы на Python:
s = open("zadanie_4_24.txt").read().strip()
s = s[:-1] # удаляем завершающий 0
prev = s[0]
cur = 1
best = 1
best_char = s[0]
for ch in s[1:]:
    if ch == prev:
        cur += 1
    else:
        cur = 1
    if cur > best:
        best = cur
        best_char = ch
    prev = ch
print(best_char, best)


Строгое сравнение с текущим максимумом не меняет сохранённую серию при равенстве длин, поэтому выбирается именно первое подходящее вхождение.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18974.

25. Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190061; 190080], числа, имеющие ровно 6 различных нечётных натуральных делителей. Для каждого найденного числа выведите в отдельной строке само число и сумму всех его нечётных делителей. Строки расположите в порядке возрастания найденных чисел.

Верный ответ:

190062 137280
190066 99294
190075 235724


С чего начать:
Как и в задании на четыре нечётных делителя, сначала удаляем из числа все множители 2. После этого делители переменной odd_part совпадают со всеми нечётными делителями исходного числа.

Как программа получает количество и сумму:
Функция get_divisors находит делители попарно до квадратного корня. Если длина полученного списка равна шести, исходное число подходит. Команда sum(odd_divisors) складывает именно эти шесть нечётных делителей.

Почему выводится исходное число, а не нечётная часть:
Искомым объектом остаётся число из заданного отрезка. Нечётная часть используется только как удобный способ найти требуемые делители, поэтому в первой колонке печатается n, а во второй — рассчитанная сумма.

Пример программы на Python 3:
from math import isqrt

def get_divisors(n):
    divisors = []
    for d in range(1, isqrt(n) + 1):
        if n % d == 0:
            divisors.append(d)
            if d * d != n:
                divisors.append(n // d)
    return divisors

for n in range(190061, 190081):
    odd_part = n
    while odd_part % 2 == 0:
        odd_part //= 2

    odd_divisors = get_divisors(odd_part)
    if len(odd_divisors) == 6:
        print(n, sum(odd_divisors))

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18894.

26. Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Файл для выполнения задания

Входные данные. В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 100 000) и N – количество пользователей (натуральное число, не превышающее 2000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Пример входного файла:
100     4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера:
2     50

Верный ответ: 1132 70

1. Максимизируем количество файлов.
Если требуется сохранить как можно больше файлов, сначала нужно рассматривать самые маленькие: замена меньшего файла на больший не может освободить место и увеличить количество. Поэтому размеры сортируем по возрастанию и последовательно складываем.
Сумма 1132 наименьших файлов равна 13 801. Следующий файл имеет размер 51, и 13 801 + 51 = 13 852, что превышает объём диска 13 820. Значит, 1133 файла не помещаются, а 1132 файла поместить можно.

2. Максимизируем размер одного файла при найденном количестве.
Нельзя просто вывести размер 1132-го файла после сортировки: это даст лишь один из возможных наборов, но не наибольший допустимый файл. Оставим 1131 самый маленький файл. Их сумма равна 13 750, поэтому для ещё одного файла остаётся 70 единиц. В исходном наборе есть файл размера 70; любой файл большего размера уже превысит свободный остаток.

Удобная схема программы:

a.sort()
s = 0
k = 0
while k < N and s + a[k] <= S:
    s += a[k]
    k += 1

base = sum(a[:k - 1])
max_file = max(x for x in a[k - 1:] if base + x <= S)
Сортировка по возрастанию отвечает за максимальное количество, а замена последнего файла — за выполнение второго критерия задачи.

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 18895.

27. Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на \(N\) непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной \(H\) и \(W\), причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников.
Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости A(x1, y1) и B(x2, y2) вычисляется по формуле:
\(d(A,B)=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\).

В файле A хранятся координаты точек двух кластеров, где \(H = 6{,}5\) и \(W = 4{,}5\) для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата \(x\), затем координата \(y\). Известно, что количество точек не превышает 1000.

В файле B хранятся координаты точек трёх кластеров, где \(H = 4{,}4\) и \(W = 4\) для каждого кластера. Известно, что количество точек не превышает 10 000. Структура хранения информации в файле B аналогична структуре в файле A.
Известно, что в файле A имеются координаты ровно двух, а в файле B ровно трёх «лишних» точек, представляющих аномалии, которые возникли в результате помех при передаче данных. Эти точки не относятся ни к одному из кластеров, их учитывать не нужно.

Для файла A определите координаты центра каждого кластера, затем найдите два числа: \(P_1\) — минимальное расстояние между центром одного кластера и точкой другого кластера и \(P_2\) — максимальное расстояние между центром кластера и точкой другого кластера.

Для файла B определите координаты центра каждого кластера, затем найдите два числа: \(Q_x\) — среднее арифметическое абсцисс центров кластеров и \(Q_y\) — среднее арифметическое ординат центров кластеров.
В ответе запишите четыре числа: в первой строке — сначала целую часть произведения \(P_1 \times 10\,000\), затем целую часть произведения \(P_2 \times 10\,000\); во второй строке — сначала целую часть абсолютной величины произведения \(Q_x \times 10\,000\), затем целую часть абсолютной величины произведения \(Q_y \times 10\,000\).

Возможные данные одного из файлов проиллюстрированы графиком.

Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.
Задание ЕГЭ по Информатике

Верный ответ:
Первая строка: 74829, 109831
Вторая строка: 166537, 86699

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

Шаг 1. Прочитать координаты.
В каждой непустой строке записаны два вещественных числа. В файле используется десятичная запятая, тогда как функция float в Python ожидает точку. Поэтому строка сначала преобразуется командой replace(",", "."), затем разбивается на две части. Каждая точка хранится как кортеж (x, y).

Шаг 2. Разделить точки на кластеры и аномалии.
График в условии является только иллюстрацией и не показывает данные этого варианта. Сначала полезно построить точечную диаграмму по фактическому файлу в электронной таблице. На ней видны плотные группы и отдельные далёкие точки. После этого выбираются границы в пустых промежутках между группами. Эти границы не вычисляются из H и W и не являются единственно возможными: подходят любые условия, которые дают то же разбиение. Аномалию нельзя присоединять к ближайшему кластеру, потому что по условию она не относится ни к одному из них.

Разбиение именно для этих файлов.
В файле A верхний кластер задаётся условиями x > 0, y > 16, нижний — x > 0, 9 < y < 16. Нижняя граница 9 выбрана так, чтобы не потерять четыре крайние точки второго кластера. В файле B используются три разнесённые прямоугольные области.
В файле A получаются размеры кластеров 105 и 140; две отброшенные точки: (5,4753459; −1,6318432); (−3,8852938; 20,8820432).
В файле B получаются размеры кластеров 101, 96 и 445; три отброшенные точки: (−8,042437762; 26,41164858); (37,92318549; 31,48164858); (2,330782238; −25,24265146).
В программе после разбиения стоят проверки assert. Если граница выбрана неверно и количество точек не совпадёт, программа остановится, а не продолжит вычисления с неправильными кластерами.

Шаг 3. Найти центры кластеров.
Центр из условия — это медоид, то есть одна из исходных точек кластера. Он не равен среднему арифметическому координат. Для каждой точки-кандидата программа складывает расстояния до всех точек того же кластера и выбирает кандидата с минимальной суммой. Расстояние до самой себя равно нулю и на выбор не влияет.
Результаты перебора для файла A:
A1: центр (3,5265948; 20,7685119), минимальная сумма расстояний 138,042311175
A2: центр (6,1700362; 12,3647544), минимальная сумма расстояний 134,893091395.
Результаты перебора для файла B:
B1: центр (12,21724979; 10,31689525), минимальная сумма расстояний 96,002197273
B2: центр (18,21600372; 14,36225718), минимальная сумма расстояний 87,4241707861
B3: центр (19,52793365; 1,3306858), минимальная сумма расстояний 399,310278016.

Шаг 4. Вычислить величины из условия.
В файле A объединяются расстояния A1-центр → точки A2 и A2-центр → точки A1. Минимум 7,48295483501 связан с точкой (6,1614422; 19,8477043), максимум 10,9831514783 — с точкой (7,8249142; 10,6613824).
В файле B средние координаты центров равны Qx = 16,6537290533, Qy = 8,66994607667. Усредняются три центра, а не все 642 рабочих точек.

Как формируется запись ответа.
Функция scale сначала берёт модуль, затем умножает число на 10 000 и применяет int. Это именно взятие целой части, а не математическое округление: использовать round нельзя.

Типичные ошибки.
1) использовать иллюстративный график вместо данных файла; 2) включить аномалию в ближайший кластер; 3) принять средние координаты за центр; 4) сравнить точку с центром чужого кластера при поиске внутреннего радиуса; 5) округлить результат; 6) забыть модуль у координатной величины.

Полная проверенная программа на Python.
Файлы A и B нужно положить в ту же папку, что и программа. Условия разбиения относятся именно к этому варианту.

from math import hypot


def read_points(filename):
    points = []
    with open(filename, encoding="utf-8-sig") as file:
        for line in file:
            if line.strip():
                x, y = map(float, line.replace(",", ".").split())
                points.append((x, y))
    return points


def distance(a, b):
    return hypot(a[0] - b[0], a[1] - b[1])


def cluster_center(cluster):
    # По определению из условия центр обязан быть одной из точек кластера.
    best_point = None
    best_sum = float("inf")
    for candidate in cluster:
        current_sum = sum(distance(candidate, p) for p in cluster)
        if current_sum < best_sum:
            best_sum = current_sum
            best_point = candidate
    return best_point


def scale(value):
    # int после модуля отбрасывает дробную часть, а не округляет.
    return int(abs(value) * 10000)

def split_a(points):
    clusters = [[], []]
    anomalies = []
    for p in points:
        x, y = p
        if x > 0 and y > 16:
            clusters[0].append(p)
        elif x > 0 and 9 < y < 16:
            clusters[1].append(p)
        else:
            anomalies.append(p)
    return clusters, anomalies

def split_b(points):
    clusters = [[], [], []]
    anomalies = []
    for p in points:
        x, y = p
        if 8 < x < 15 and 5 < y < 13:
            clusters[0].append(p)
        elif 15 < x < 22 and y > 8:
            clusters[1].append(p)
        elif 15 < x < 25 and y < 5:
            clusters[2].append(p)
        else:
            anomalies.append(p)
    return clusters, anomalies

points_a = read_points("27var09A.txt")
points_b = read_points("27var09B.txt")

clusters_a, anomalies_a = split_a(points_a)
clusters_b, anomalies_b = split_b(points_b)

# Эти проверки сразу обнаружат ошибку в границах разбиения.
assert [len(c) for c in clusters_a] == [105, 140]
assert [len(c) for c in clusters_b] == [101, 96, 445]
assert len(anomalies_a) == 2
assert len(anomalies_b) == 3

centers_a = [cluster_center(cluster) for cluster in clusters_a]
centers_b = [cluster_center(cluster) for cluster in clusters_b]

cross_distances = (
    [distance(centers_a[0], p) for p in clusters_a[1]] +
    [distance(centers_a[1], p) for p in clusters_a[0]]
)
p1 = min(cross_distances)
p2 = max(cross_distances)

qx = sum(center[0] for center in centers_b) / 3
qy = sum(center[1] for center in centers_b) / 3

print(scale(p1), scale(p2))
print(scale(qx), scale(qy))

P.S. Нашли ошибку в задании? Пожалуйста, сообщите о вашей находке ;)
При обращении указывайте id этого вопроса - 25538.