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

Вариант 3

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

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

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

На графе пункт В имеет пять соседей — это наибольшая степень. В таблице пять связей имеет только П6, значит, В = П6. Пункт Е имеет степень 4, поэтому ему соответствует П4.

Вершины А и К имеют степень 2. Пункт К соединён с Е степени 4 и Г степени 3. В таблице такой набор соседей имеет П1: он соединён с П4 степени 4 и П2 степени 3. Поэтому К = П1, а Г = П2.

Искомой дороге Г—К соответствует ребро П2—П1. Его длина в таблице равна 30.

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

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

(x ≡ z) ∨ (x → (y ∧ ¬w))

Дан частично заполненный фрагмент из трёх различных строк таблицы истинности функции F. Определите, какому столбцу соответствует каждая из переменных w, x, y, z.
Переменная 1Переменная 2Переменная 3Переменная 4F
  0 0
001 0
0 111
В ответе напишите буквы w, x, y, z в порядке следования соответствующих столбцов. Буквы пишите подряд, без разделителей.

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

Для функции (x ≡ z) ∨ (x → (y ∧ ¬w)) рассмотрим сначала строки, в которых F = 0. Дизъюнкция ложна только тогда, когда оба слагаемых ложны.

Из x ≡ z = 0 следует x ≠ z. Импликация x → (y ∧ ¬w) ложна только при x = 1 и y ∧ ¬w = 0. Поэтому в каждой ложной строке x = 1, z = 0, а также выполняется y = 0 или w = 1.

Первая ложная строка содержит w = 0. Тогда ¬w = 1, поэтому для равенства y ∧ ¬w = 0 необходимо y = 0. Получается набор столбцов 0 0 0 1.
Во второй ложной строке уже указаны y = 0, z = 0 и w = 1; значение x должно быть 1. Получается 0 0 1 1.

В третьей строке F = 1, причём y = 0, w = 1, x = 1. Импликация при таких значениях ложна, поэтому истинность функции может обеспечить только эквивалентность x ≡ z; следовательно, z = 1. Полная строка имеет вид 0 1 1 1.
Сигнатуры столбцов равны 000, 001, 011 и 111, что соответствует переменным y, z, w и x.

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

3. В файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц. Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой декады июня 2021 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. занесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Таблица «Магазин» содержит информацию о местонахождении магазинов. На рисунке приведена схема указанной базы данных.
Задание ЕГЭ по информатике
Используя информацию из приведённой базы данных, определите количество магазинов Октябрьского района, в которые в период с 1 по 10 июня включительно было поставлено более 170 упаковок товара «Чай черный индийский». В ответе запишите только число.

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

В таблице «Товар» находим товар «Чай черный индийский»: его артикул — 44. В таблице «Магазин» выбираем пять магазинов Октябрьского района: M1, M5, M6, M10 и M15.

В таблице «Движение товаров» оставляем операции «Поступление» с артикулом 44 за указанный период. Количества поставленных упаковок по магазинам равны: M1 — 170, M10 — 170, M15 — 180, M5 — 180, M6 — 180.

Условие «более 170» является строгим: значения, равные 170, не подходят. Остаются три магазина с поставкой 180 упаковок.

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

4. По каналу связи передаются сообщения, состоящие из девяти букв: А, Б, В, Г, Д, Е, Ж, З, И. Для передачи используется двоичный код, удовлетворяющий условию Фано. Для букв А, Б, В и Г заданы кодовые слова 000, 001, 01 и 10 соответственно. Какова минимально возможная сумма длин кодовых слов для всех девяти букв?

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

Сумма длин известных слов равна 3 + 3 + 2 + 2 = 10. Коды 000, 001 и 01 полностью заполняют ветвь 0, а код 10 занимает часть ветви 1. Для пяти оставшихся букв доступна только ветвь 11.

Внутри этой ветви нужно построить код для пяти букв. На втором уровне относительно вершины 11 имеется четыре ветви, поэтому три из них можно оставить словами длины 4, а четвёртую приходится разделить на два слова длины 5. Например, подходят 1100, 1101, 1110, 11110 и 11111.

Длины новых слов дают 4 + 4 + 4 + 5 + 5 = 22. Пять листьев невозможно разместить ближе к вершине 11, поскольку на предыдущем уровне их только четыре.

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

5. Автомат обрабатывает натуральное число N по следующему алгоритму:
        1. Строится двоичная запись числа N.
        2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления полученной суммы на 2.
        3. Предыдущий пункт повторяется для записи с добавленной цифрой.
        4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
        1. Двоичная запись числа N: 1101.
        2. Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011.
        3. Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110.
        4. На экран выводится число 54.
Какое наименьшее число, большее 80, может появиться на экране в результате работы автомата?

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

После первого добавления бита количество единиц становится чётным, поэтому при повторении всегда дописывается 0. Следовательно, автомат получает:
R = 4N, если в двоичной записи N чётное число единиц;
R = 4N + 2, если нечётное.

Ищем не исходное N, а наименьшее число, которое появится на экране и будет больше 80.

N = 20 = 101002: единиц 2, дописываются 00, поэтому R = 10100002 = 80 — не подходит из-за строгого неравенства.
N = 21 = 101012: единиц 3, дописываются 10, поэтому R = 10101102 = 86.

Результаты автомата возрастают вместе с N, поэтому между 80 и этим значением другого результата быть не может.

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

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

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

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

Пока хвост поднят, Черепаха перемещается в точку (100; 100) и устанавливает направление −30° к оси Ox. После команды Опусти один блок цикла строит две соседние стороны: 30 и 40. Поэтому два блока замыкают прямоугольник 30 × 40, а оставшиеся повторения только обводят его ещё раз.

Пусть u и v — координаты точки вдоль сторон длиной 30 и 40:
u = (√3/2)(x − 100) − (1/2)(y − 100),
v = −(1/2)(x − 100) − (√3/2)(y − 100).
Строго внутренние точки удовлетворяют условиям 0 < u < 30 и 0 < v < 40. Перебор целочисленных координат в пределах фигуры даёт 1200 точек; точки с равенством в любом из условий принадлежат границе.

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

7. Для хранения сжатого произвольного растрового изображения размером 512×750 пикселей отведено 80 Кбайт памяти без учёта размера заголовка файла. Файл оригинального изображения больше сжатого на 65%. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?

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

Подсказка: сжатый файл занимает 80 Кбайт, а оригинальный больше на 65%, значит его объём равен 80·1024·1,65 байт.
Бит на пиксель: 80·1024·1,65·8 / (512·750) = 2,816.
Можно взять только целое число бит на пиксель, значит максимум 2 бита.
Количество цветов: 22 = 4.

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

8. Все 5-буквенные слова, составленные из букв 'a', 'b', 'c', 'd', 'e', 'f', 'g', записаны в алфавитном порядке. Вот начало списка:
      1. aaaaa
      2. aaaab
      3. aaaac
      4. aaaad
      5. aaaae
      6. aaaaf
      7. aaaag
      8. aaaba
      ...
Запишите слово, которое стоит на 12769-м месте от начала списка.

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

Так как используется 7 букв, номер слова можно связать с записью числа в системе счисления с основанием 7. Сначала переходим к нумерации с нуля: 12769 − 1 = 12768.

Представим 12768 в семеричной системе:
12768 = 5 · 74 + 2 · 73 + 1 · 72 + 4 · 7 + 0,
то есть получаем 521407.

Сопоставляем цифрам буквы по алфавиту: 0 → a, 1 → b, 2 → c, 3 → d, 4 → e, 5 → f, 6 → g. Цифры 5, 2, 1, 4, 0 дают буквы f, c, b, e, a.

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

9. Откройте файл электронной таблицы, содержащей 1072 вещественных числа — значения средней температуры воздуха за отдельные дни. Найдите модуль суммы минимального значения температуры и среднего арифметического всех значений. В ответе запишите только целую часть получившегося числа.

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

В файле нет строки заголовков: все 1072 значения находятся в диапазоне A1:A1072.

Минимальное значение:
=МИН(A1:A1072) → −29,220221.

Среднее арифметическое:
=СРЗНАЧ(A1:A1072) → приблизительно 4,43858.

Их сумма отрицательна: −29,220221 + 4,43858 ≈ −24,781641. По условию нужен модуль, поэтому получаем приблизительно 24,781641, а затем берём только целую часть — 24.

В одной формуле это можно записать так:
=ЦЕЛОЕ(ABS(МИН(A1:A1072)+СРЗНАЧ(A1:A1072)))

Модуль нужно применять после сложения, а не отдельно к каждому слагаемому: это разные математические выражения.

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

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

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

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

Редактор находит 2 вхождения именно формы «дань». Форма «дани» не подходит, поскольку условие требует конкретную словоформу, а не все формы существительного.

Поиск по части слова «дан» был бы неверным: он мог бы находить и другие слова, содержащие такое сочетание букв.

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

11. В некоторой стране автомобильный номер состоит из 5 символов. В качестве символов используют 33 различные буквы и десятичные цифры в любом порядке. Каждый такой номер в компьютерной программе записывается минимально возможным и одинаковым целым количеством байтов, при этом используют посимвольное кодирование и все символы кодируются одинаковым минимально возможным количеством битов. Определите объём памяти, отводимый этой программой для записи 60 тысяч номеров. Ответ дайте в тысячах байт.

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

В номере могут использоваться 33 буквы и 10 цифр, всего 43 различных символа. Все они относятся к одному общему алфавиту.

Для одного символа требуется 6 бит:
2⁵ = 32 < 43 ≤ 64 = 2⁶.
Пять символов номера занимают 5 · 6 = 30 бит.

Для каждого номера выделяется целое число байтов. Три байта содержат только 24 бита, поэтому одному номеру нужны 4 байта.

Для 60 000 номеров потребуется:
60 000 · 4 = 240 000 байт.
Вопрос просит ответ в тысячах байт, поэтому 240 000 байт — это 240 тысяч байт. Делить на 1024 здесь не нужно.

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

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
Выполните задание.
На ленте в соседних ячейках записана последовательность из 520 символов, среди которых могут быть только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами λ. В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности.

Программа работы исполнителя:
λ10
q0λ, L, q1
q1λ, S, q10, S, q11, L, q1
После выполнения программы на ленте осталось ровно 125 нулей. Определите минимально возможное число нулей в исходной последовательности.

Ответ: ____________________.

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

Пусть справа от последней единицы находятся k нулей. Исполнитель заменит эти k нулей единицами, затем заменит саму единицу нулём и остановится. Поэтому число нулей изменится так: −k + 1.

Чтобы исходных нулей было как можно меньше при конечных 125 нулях, нужно взять минимальное k, то есть k = 0. Это означает, что крайний справа символ сразу является единицей. Программа немедленно заменит его нулём, не уничтожив ни одного исходного нуля.

Следовательно, после работы нулей станет ровно на один больше, чем было: исходное количество равно 125 − 1. Любой ноль на правом конце сначала превратился бы в единицу и потребовал бы увеличить исходное число нулей.

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

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

Сеть задана IP-адресом 23.140.159.160 и маской сети 255.255.252.0. Сколько в этой сети IP-адресов, для которых в двоичной записи IP-адреса суммарное количество единиц в левых двух байтах не менее суммарного количества единиц в правых двух байтах?

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

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

Маска задаёт сеть 23.140.156.0–23.140.159.255; в ней 1024 IP-адреса. В условии сказано именно об IP-адресах сети, поэтому перебираются все адреса, включая адрес сети и широковещательный адрес.

Каждый адрес переводим в 32-битную запись. Срез первых 16 бит соответствует левым двум байтам, последних 16 бит — правым двум. Далее считаем единицы и проверяем условие: left ≥ right.

from ipaddress import ip_network

net = ip_network("23.140.159.160/255.255.252.0", strict=False)
count = 0
for address in net:
    bits = f"{int(address):032b}"
    left = bits[:16].count("1")
    right = bits[16:].count("1")
    if left >= right:
        count += 1
print(count)
Ключевой момент — не сравнивать сами байты как десятичные числа: условие относится к количеству единиц в их двоичной записи.

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

14. Значение арифметического выражения: −214 + 416 − 163 + 42 записали в системе счисления с основанием 4. Сколько цифр 3 содержится в этой записи?

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

Преобразуем все степени к основанию 4: 214 = 47, 163 = 46. Получаем 416 − 47 − 46 + 42.

Разность 416 − 47 содержит девять троек в разрядах 7–15. При вычитании 46 занимается единица из 7-го разряда: его цифра уменьшается с 3 до 2, зато в 6-м разряде появляется 3. Поэтому общее количество троек не меняется.

Слагаемое 42 ставит цифру 1 во 2-й разряд и также не добавляет троек.

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

15. Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального числа А формула

ДЕЛ(x,A)→(¬ДЕЛ(x,28)∨ДЕЛ(x,42))

тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х)?

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

Импликация ложна, если x одновременно делится на A и на 28, но не делится на 42. Значит, нужно добиться, чтобы любое общее кратное A и 28 делилось на 42.

Разложим числа на простые множители:
28 = 2² · 7,
42 = 2 · 3 · 7.
В числе 28 уже есть нужные множители 2 и 7, но отсутствует множитель 3. Поэтому A обязательно должно добавить множитель 3 в НОК(A, 28).

Наименьшее натуральное число, которое это обеспечивает, — сам недостающий простой множитель.

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

16. Алгоритм вычисления функций F(n) и G(n) задан следующими соотношениями:
F(1) = G(1) = 1
F(n) = 3 ⋅ F(n–1) + G(n–1) – n + 5, если n > 1
G(n) = F(n–1) + 3 · G(n–1) – 3 · n, если n > 1
Чему равно значение F(14) + G(14)?

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

Вопрос требует найти сумму F(n) + G(n), поэтому отдельно вычислять обе функции необязательно. Обозначим S(n) = F(n) + G(n) и сложим данные рекуррентные формулы:

S(n) = 3F(n−1) + G(n−1) − n + 5 + F(n−1) + 3G(n−1) − 3n =
= 4(F(n−1) + G(n−1)) − 4n + 5 = 4S(n−1) − 4n + 5.

Начальное значение S(1) = 1 + 1 = 2. Теперь вместо двух функций достаточно последовательно вычислять одну:

s = 2
for n in range(2, 15):
    s = 4 * s - 4 * n + 5
print(s)
Такое преобразование не является догадкой: коэффициенты при F(n−1) и G(n−1) после сложения становятся одинаковыми, поэтому они объединяются в предыдущую сумму S(n−1).

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

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

− кратны 6, но не кратны ни 24, ни 11;
− последняя цифра отлична от 4;
− последние две цифры отличны от 28.

Найдите количество таких чисел и максимальное из них. В ответе запишите два числа через пробел: сначала количество, затем максимальное число.

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

Подходят только числа, для которых истинны сразу все пять проверок: кратность 6, отсутствие кратности 24 и 11, последняя цифра не 4 и две последние цифры не 28.

Последние цифры удобно проверять остатками от деления на 10 и 100:

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

good = [
    x for x in a
    if x % 6 == 0
    and x % 24 != 0
    and x % 11 != 0
    and x % 10 != 4
    and x % 100 != 28
]

print(len(good), max(good))
Операции «не кратно 24» и «не кратно 11» являются двумя отдельными запретами: число отбрасывается при нарушении любого из них. Аналогично отдельно проверяются последняя и две последние цифры. После полной фильтрации остаётся 852 элемента, максимальный — 9996.

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

18. Дана последовательность вещественных чисел. Из неё необходимо выбрать несколько подряд идущих чисел так, чтобы каждое следующее число было меньше предыдущего. Какую максимальную сумму могут иметь выбранные числа? В ответе запишите целую часть полученной суммы. Исходные данные записаны в виде столбца электронной таблицы в файле.

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

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

Например, формула имеет смысл «если A2 < A1, то B2 = B1 + A2, иначе B2 = A2». Максимум вспомогательного столбца и будет наибольшей суммой подходящего подряд идущего фрагмента.

Лучший фрагмент расположен в строках 392–395: 144,822483…; 127,005794…; 113,553275…; 73,215392…. Его сумма равна 458,596946…, а по условию требуется записать целую часть, то есть отбросить дробную часть.

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

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

За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 61. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 61 или больше камней. В начальный момент в первой куче было 7 камней, во второй куче – S камней; 1 ≤ S ≤ 53.

19. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

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

С чего начать. Здесь число S нельзя угадывать проверкой готового ответа. Решаем задачу с конца: сначала определяем, какая позиция позволит Ване закончить игру одним ходом, затем выясняем, каким первым ходом Петя мог оставить такую позицию. Для минимального S в первую очередь проверяем два последовательных увеличения второй кучи в 2 раза, потому что именно в ней находится неизвестное S. За два хода эта куча станет равна 4·S, поэтому получаем неравенство 7 + 4·S ≥ 61. Отсюда S ≥ (61 − 7)/4, и первое целое значение равно 14. Это и есть источник первого проверяемого числа. Для S = 13 даже такая самая сильная последовательность даёт 7 + 4·13 = 59, что меньше 61. После нахождения границы остаётся проверить, что первый ход Пети ещё не завершает игру.

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

При S = 14 Петя удваивает вторую кучу: (7, 14) → (7, 28). Сумма 35 меньше 61. Ваня снова удваивает вторую кучу и получает (7, 56); теперь сумма равна 63, поэтому игра заканчивается.

Если S = 13, то даже два последовательных удвоения второй кучи дают 7 + 4 · 13 = 59. Удвоение первой кучи или прибавление одного камня слабее, поэтому при любом меньшем S Ваня не сможет выиграть своим первым ходом.

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

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

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

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

Откуда берутся проверяемые S. Из начальной позиции выписываем все формы первого хода, а затем смотрим, какие из них совпадают с опорными позициями. Для этой игры получаются:
• (14, 23): S = 23, Петя удваивает первую кучу;
• (8, 26): S = 26, Петя прибавляет 1 к первой куче;
Именно обратный переход от этих позиций, а не случайный перебор, даёт числа в ответе.

Проверка и доказательство.
При S = 23 Петя удваивает первую кучу: (7, 23) → (14, 23). После любого хода Вани Петя может сразу получить сумму не меньше 61: обычно достаточно удвоить нужную кучу, а после позиции (14, 46) — добавить один камень к первой.

При S = 26 Петя добавляет камень к первой куче: (7, 26) → (8, 26). После прибавлений или удвоения первой кучи Петя удваивает вторую; после удвоения второй получает (8, 52) и добавляет камень к первой.

Именно позиции (14, 23) и (8, 26) являются проигрышными для игрока, которому предстоит ход: все его продолжения переводят соперника в выигрыш за один ход. Обратный переход к начальной первой куче 7 даёт только S = 23 и S = 26.

Ни при одном из них Петя не достигает порога 61 своим первым ходом.

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

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

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

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

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

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

S = 22
• Петя: +1 к первой куче → (8, 22). Ваня не выигрывает сразу, но ходом ×2 первую кучу переводит игру в опорную позицию (16, 22) и гарантирует победу своим следующим ходом.
• Петя: +1 ко второй куче → (7, 23). Ваня не выигрывает сразу, но ходом ×2 первую кучу переводит игру в опорную позицию (14, 23) и гарантирует победу своим следующим ходом.
• Петя: ×2 первую кучу → (14, 22). Ваня не выигрывает сразу, но ходом +1 ко второй куче переводит игру в опорную позицию (14, 23) и гарантирует победу своим следующим ходом.
• Петя: ×2 вторую кучу → (7, 44). Ваня выигрывает сразу: ×2 вторую кучу → (7, 88).

S = 25
• Петя: +1 к первой куче → (8, 25). Ваня не выигрывает сразу, но ходом +1 ко второй куче переводит игру в опорную позицию (8, 26) и гарантирует победу своим следующим ходом.
• Петя: +1 ко второй куче → (7, 26). Ваня не выигрывает сразу, но ходом +1 к первой куче переводит игру в опорную позицию (8, 26) и гарантирует победу своим следующим ходом.
• Петя: ×2 первую кучу → (14, 25). Ваня выигрывает сразу: ×2 вторую кучу → (14, 50).
• Петя: ×2 вторую кучу → (7, 50). Ваня выигрывает сразу: ×2 первую кучу → (14, 50).

Проверка и доказательство.
Подходят S = 22 и S = 25.

При S = 22 ходы Пети ведут в (8, 22), (7, 23), (14, 22) или (7, 44). Последняя позиция даёт Ване немедленную победу, а первые три относятся к позициям, из которых Ваня выигрывает своим вторым ходом.

При S = 25 получаются (8, 25), (7, 26), (14, 25) и (7, 50). Две последние позиции позволяют выиграть сразу, а две первые — не позднее второго хода.

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

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

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

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

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

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

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

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

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

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

Критическая цепочка: 7 → 8 → 11 → 12. В процессе 12 приходится ждать ветвь через процесс 11, потому что она заканчивается позже ветви через процесс 6. Складывать длительности всех процессов нельзя: такой способ ошибочно предполагает, что параллельного выполнения нет.

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

23. Исполнитель РазДва преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2

Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для исполнителя РазДва – это последовательность команд.
Сколько существует программ, которые преобразуют исходное число 2 в число 24, и при этом траектория вычислений содержит ровно одно из чисел 9 и 10? Траектория вычислений – это последовательность результатов выполнения всех команд программы.
Например, для программы 212 при исходном числе 4 траектория будет состоять из чисел 8, 10, 20.

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

Фраза «ровно одно из чисел 9 и 10» задаёт два непересекающихся случая:
1) траектория проходит через 9 и не проходит через 10;
2) траектория проходит через 10 и не проходит через 9.

Для команд «+1» и «×2» число способов получить n считается по формуле F(n)=F(n−1)+F(n/2) для чётного n и F(n)=F(n−1) для нечётного. Запрещённому числу присваивается 0.

Случай через 9.
Из 2 в 9 существует 5 программ. После 9 нельзя попадать в 10: команда «+1» запрещена, поэтому единственный допустимый первый шаг — 9→18. Далее до 24 остаётся только прибавлять 1. Получается 5 · 1 = 5 программ.

Случай через 10.
Из 2 в 10 без прохождения через 9 существует 2 программы. Из 10 в 24 существует 4 программы. Получается 2 · 4 = 8 программ.

Случаи несовместимы, поэтому количества складываются: 5 + 8 = 13.

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

24. Текстовый файл состоит не более чем из 106 символов A, B и C. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны. Для выполнения этого задания следует написать программу.

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

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

Пример программы на Python:
s = open("zadanie_9_24.txt").read().strip()
start = 0
best = 1
for i in range(1, len(s)):
    if s[i] == s[i - 1]:
        start = i
    best = max(best, i - start + 1)
print(best)


Переменная start хранит начало текущей допустимой подстроки. При равной паре начало переносится на текущую позицию, поскольку включить в новую подстроку оба одинаковых символа нельзя, а один текущий символ включить можно. Разность i - start + 1 даёт её длину.

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

25. Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [4671100; 4671561], простые числа, оканчивающиеся на цифру 7. Выведите все найденные простые числа, оканчивающиеся на цифру 7, в порядке возрастания, слева от каждого числа выведите его номер по порядку. Запишите выведенные числа в одну строку.

Пример верной записи ответа:

1 7 2 17, где 1 и 2 – порядковые номера чисел 7 и 17.

Верный ответ: 1 4671137 2 4671167 3 4671257 4 4671347 5 4671427 6 4671467 7 4671517 8 4671547

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

Почему условие записано как n % 10 == 7:
Остаток от деления целого числа на 10 совпадает с его последней цифрой. После этой проверки функция is_prime ищет возможный делитель до квадратного корня.

Откуда берутся порядковые номера:
Переменная k начинается с нуля и увеличивается только тогда, когда число выполнило оба условия. В список по очереди добавляются k и n. Поэтому print(*answer) выводит последовательность «номер, число, номер, число» с одним пробелом между всеми значениями.

Пример программы на Python 3:

from math import isqrt

def is_prime(n):
    if n < 2:
        return False
    for d in range(2, isqrt(n) + 1):
        if n % d == 0:
            return False
    return True

answer = []
k = 0
for n in range(4671100, 4671562):
    if n % 10 == 7 and is_prime(n):
        k += 1
        answer += [k, n]

print(*answer)

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

26. Администратор раскладывает N архивов по K дискам объёмом V каждый. Архивы обрабатываются по убыванию размера. Для очередного архива проверка начинается с текущего диска. Если архив не помещается, проверяется следующий диск и далее по кругу. После успешной записи следующий архив начинают проверять с диска, следующего за использованным. Если архив не помещается ни на один диск, он откладывается, а свободное место на дисках не изменяется.

После обработки всех архивов определите:
1) суммарное свободное место на всех дисках;
2) номер диска с наибольшим свободным остатком. Диски нумеруются от 1 до K; если максимальный остаток одинаков на нескольких дисках, укажите наименьший номер.

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

В первой строке записаны V, K и N. В следующих N строках находятся размеры архивов.

Запишите два числа через пробел.

Пример:
20 3 10
17
15
13
12
11
7
6
4
3
2
После выполнения алгоритма на дисках остаётся 0, 1 и 0 единиц, поэтому для примера ответ: 1 2.

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

Для решения требуется полностью воспроизвести работу скрипта. Простое деление общего объёма архивов на суммарную ёмкость дисков не подходит: часть файлов откладывается из-за распределения свободных промежутков по разным дискам.

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

Моделирование:

files.sort(reverse=True)
free = [V] * K
start = 0

for x in files:
    for shift in range(K):
        d = (start + shift) % K
        if x <= free[d]:
            free[d] -= x
            start = (d + 1) % K
            break

free_sum = sum(free)
max_free = max(free)
disk = free.index(max_free) + 1
Метод index возвращает первое вхождение максимума, поэтому при равенстве остатков автоматически выбирается диск с наименьшим номером.

После обработки файла остатки на дисках равны 0, 82, 24, 0, 0, 77, 44 и 3. Их сумма равна 230, а наибольший остаток 82 находится на диске № 2. Отложенные архивы в сумму свободного места не входят: они ничего не занимают на дисках.

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

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

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

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

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

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

Верный ответ:
Первая строка: 23684, 65128
Вторая строка: 72353, 130974

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

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

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

Разбиение именно для этих файлов.
В файле A обе аномалии сильно удалены вправо, поэтому рабочие точки удовлетворяют x < 10; кластеры разделяются линией y = 9. В файле B группы находятся в трёх хорошо различимых областях: слева сверху, справа сверху и справа снизу.
В файле A получаются размеры кластеров 92 и 128; две отброшенные точки: (45,65163004; 12,80312744); (36,20448884; 12,13602285).
В файле B получаются размеры кластеров 101, 96 и 445; три отброшенные точки: (−8,042437762; 26,41164858); (37,92318549; 31,48164858); (2,330782238; −25,24265146).
В программе после разбиения стоят проверки assert. Если граница выбрана неверно и количество точек не совпадёт, программа остановится, а не продолжит вычисления с неправильными кластерами.

Шаг 3. Найти центры кластеров.
Центр из условия — это медоид, то есть одна из исходных точек кластера. Он не равен среднему арифметическому координат. Для каждой точки-кандидата программа складывает расстояния до всех точек того же кластера и выбирает кандидата с минимальной суммой. Расстояние до самой себя равно нулю и на выбор не влияет.
Результаты перебора для файла A:
A1: центр (4,29949916; 6,22951182), минимальная сумма расстояний 68,8015003941
A2: центр (6,66792676; 12,74236299), минимальная сумма расстояний 84,1389816252.
Результаты перебора для файла B:
B1: центр (12,21724979; 10,31689525), минимальная сумма расстояний 96,002197273
B2: центр (18,21600372; 14,36225718), минимальная сумма расстояний 87,4241707861
B3: центр (19,52793365; 1,3306858), минимальная сумма расстояний 399,310278016.

Шаг 4. Вычислить величины из условия.
Расстояние по оси x — это модуль разности абсцисс: Px = |6,66792676 − 4,29949916| = 2,3684276. Аналогично Py = 6,51285117. Формула квадратного корня здесь не нужна, потому что требуются две отдельные проекции.
Для файла B уже требуются обычные евклидовы расстояния между каждой из трёх пар центров:
d(B1, B2) = 7,23533011392
d(B1, B3) = 11,5843885803
d(B2, B3) = 13,0974429861.
Минимум равен 7,23533011392, максимум — 13,0974429861.

Как формируется запись ответа.
Функция 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 < 10 and y < 9:
            clusters[0].append(p)
        elif x < 10 and y > 9:
            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("27var03A.txt")
points_b = read_points("27var03B.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] == [92, 128]
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]

px = abs(centers_a[0][0] - centers_a[1][0])
py = abs(centers_a[0][1] - centers_a[1][1])

center_distances_b = [
    distance(centers_b[i], centers_b[j])
    for i in range(3)
    for j in range(i + 1, 3)
]
q1 = min(center_distances_b)
q2 = max(center_distances_b)

print(scale(px), scale(py))
print(scale(q1), scale(q2))

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