Банк Задач
Школьник
Студент
Преподаватель
Конструктор
Варианты
Банк заданий
Методички
Статистика
Мои классы
Баллодожималка
ДВИ МГУ
Банк Задач
Конструктор
Варианты
Банк заданий
Методички
Статистика
Мои классы
Баллодожималка
ДВИ МГУ
Банк Задач Профиматика

Больше 5 лет помогаем школьникам уверенно сдавать ЕГЭ и поступать в вузы мечты. Не шаблоны — настоящее понимание предмета.

Карта сайта:

Банк задачКонструктор вариантовО платформе

Наши соцсети

Для учеников

YouTubeTelegramВКонтактеMax

Для преподавателей

YouTubeTelegramВКонтактеMax

Для студентов

YouTubeTelegramВКонтактеMax
политика конфиденциальностиполитика обработки перс данныхсогласие на рассылки

© 2026 Профиматика

Все материалы
Содержание

Шпаргалка по информатике для ЕГЭ

Актуально на август 2026 года

Это компактная шпаргалка от Профиматики — сборник готовых шаблонов кода и формул под каждое задание ЕГЭ по информатике. Держите её под рукой, пока решаете тренировочные варианты и разбираете свои ошибки: не нужно вспоминать синтаксис с нуля — открыл нужный раздел, взял заготовку, подставил условие задачи. Все шаблоны написаны под КЕГЭ-2026: работают с текущим форматом заданий, используют актуальные библиотеки Python и функции LibreOffice Calc.

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

Оглавление

  • Задание 1 — Анализ информационных моделей (графы)

  • Задание 2 — Алгебра логики

  • Задание 3 — Табличные базы данных

  • Задание 5 — Анализ алгоритмов для исполнителей

  • Задание 6 — Исполнитель Черепаха

  • Задание 7 — Кодирование и передача информации

  • Задание 8 — Комбинаторика

  • Задание 9 — Анализ данных через электронные таблицы

  • Задание 11 — Вычисление количества информации

  • Задание 13 — Адресация в сети Интернет

  • Задание 14 — Системы счисления

  • Задание 15 — Преобразование логических выражений

  • Задание 16 — Рекурсивные алгоритмы

  • Задание 17 — Обработка числовой последовательности

  • Задание 19–21 — Выигрышная стратегия

  • Задание 22 — Многопроцессорные системы

  • Задание 23 — Подсчёт количества маршрутов

  • Задание 24 — Обработка символьных строк

  • Задание 25 — Обработка целочисленной информации

  • Задание 26 — Сортировка целочисленной информации

  • Задание 27 — Анализ данных (кластеризация)


Задание 1 — Анализ информационных моделей (графы)

Автокод

from itertools import *

a = '478 38 256 15 34 37 168 127'.split()
# пишем связи из таблицы (построчно — номера столбцов, где есть число)
s = 'DE DG GC GA BC FB FE FH BH AH'.split()
# пишем связи из графа (рёбра, в любом порядке)
print('1 2 3 4 5 6 7 8')  # количество столбцов
for p in permutations('AHBCFEDG'):
# меняем на буквы из задания
    if all(str(p.index(y) + 1) in a[p.index(x)] for x, y in s):
        print(*p)

Задание 2 — Алгебра логики

Автокод

from itertools import *
def F(w, x, y, z):
    return (not (((x <= w) <= (w == z)))) and y

for a1, a2, a3, a4, a5 in product([0, 1], repeat=5):
    table = [(a1, 0, 1, 0), (0, a2, a3, 0), (a4, 1, 1, a5)]
    if len(set(table)) == len(table):
        for i in permutations('wxyz'):
            if [F(**dict(zip(i, r))) for r in table] == [1, 1, 1]:
                print(*i, sep='')

Основа — полная таблица истинности

print('x y z w')
for x in range(2):
    for y in range(2):
        for z in range(2):
            for w in range(2):
                f = (w == z) or (not(y <= w)) or (not(x))
                if f == 0:
                    print(x, y, z, w)

# ЗАМЕНЫ ОПЕРАЦИЙ:
# ¬a → not a  |  a∧b → a and b  |  a∨b → a or b
# a→b → a<=b  |  a≡b → a==b     |  a XOR b → a!=b

Задание 3 — Табличные базы данных

Таблицы

=ВПР(искомое_значение; таблица; номер_столбца; [интервальный_просмотр])
=ВПР(что ищем; где ищем; какой номер стобца выводим; тут всегда 0)

Задание 5 — Анализ алгоритмов для исполнителей

Системы счисления

# Перевод в 2, 8, 16:
x = bin(n)[2:]
x = oct(n)[2:]
x = hex(n)[2:]

# Перевод обратно в 10-ю СС:
r = int(n, 2)  # вместо "2" — основание исходной системы

# Функция перевода в произвольную СС (до 36):
def F(x, base):
    d = sorted('0123456789qwertyuiopasdfghjklzxcvbnm')[:base]
    s = ''
    while x > 0:
        s = d[x % base] + s
        x //= base
    return s if s else '0'

# ПРИМЕР (задание 5 — троичная СС):
otv = []
for n in range(1, 1000):
    r = F(n, 3)
    if n % 3 == 0:
        r = '1' + r + '02'
    else:
        r = r + F(n % 3 * 5, 3)
    r = int(r, 3)
    if r >= 177:
        otv.append(n)
print(min(otv))

# ПОЛЕЗНЫЕ ОПЕРАЦИИ НАД ЗАПИСЬЮ r (строка):
r = r + r[-3:]                         # дописать 3 последних разряда
r = '10' + r[2:] + '0'                # заменить два первых на '10', дописать '0'
r = '1' + r[3:]                        # убрать 3 первых и вставить '1'
r = r[-1] + r[1:-1] + r[0]            # поменять первый и последний местами
sm = sum(int(c) for c in r)            # сумма цифр числа
str(x) == str(x)[::-1]                # палиндром
x**0.5 == int(x**0.5)                 # полный квадрат
len(set(str(x))) == len(str(x))       # все цифры уникальны

Задание 6 — Исполнитель Черепаха

Черепаха

from turtle import *
tracer(0)       # отключаем анимацию
m = 15          # масштаб

# Переписываем алгоритм из задачи:
for i in range(4):
    fd(3*m); lt(270); fd(5*m); rt(90); lt(270)
for i in range(3):
    fd(5*m); rt(90); fd(3*m); lt(270)

# Рисуем сетку с точками:
up()
for x in range(-20, 20):
    for y in range(-20, 20):
        goto(x*m, y*m)
        dot(3, "red")
update()
exitonclick()   # выход по нажатию
done()          # если exitonclick не работает

# ПОМНИМ:
# Объединение — все точки (вычти область пересечения, посчитанную дважды!)
# Пересечение — только общая часть двух фигур
# Площадь/периметр — считаем ОТРЕЗКИ (кол-во точек на стороне минус 1)

Задание 7 — Кодирование и передача информации

Объём данных

# ЗВУК:
I = d * k * t * i
# d = частота дискретизации (Гц)
# i = разрешение (бит)
# k = каналы (1=моно, 2=стерео, 4=квадро)
# t = время (сек)

# ИЗОБРАЖЕНИЕ:
N = 2**i         # N — кол-во цветов, i — бит на пиксель
I = k * i        # I — объём (бит), k — кол-во пикселей

# Округление чаще в МЕНЬШУЮ сторону (иначе выход за границы памяти)

Задание 8 — Комбинаторика

Комбинаторика

from itertools import *

# С ПОВТОРЕНИЯМИ:
for i in product('123', repeat=3):
    x = ''.join(i)

# БЕЗ ПОВТОРЕНИЙ:
for i in permutations('123', 3):
    x = ''.join(i)

# ПОЛЕЗНЫЕ ПРОВЕРКИ:
if x[0] != '0':                    # число не начинается с 0
if x.count('1') == 4:              # ровно четыре '1'
if x[0] != x[1] != x[2]:          # соседние различны (ТОЛЬКО соседние!)
if len(set(s)) == 2:               # ровно 2 различных символа
if x[0] <= x[1] <= x[2]:          # неубывание (алфавитный порядок)

# Чётные/нечётные не стоят рядом — заменяем и проверяем:
for el in '02468ACE': s = s.replace(el, 'Ч')
for el in '13579BDF': s = s.replace(el, 'Н')
if 'НН' not in s and 'ЧЧ' not in s:

# ПРИМЕР (список слов):
from itertools import product
n = 0
for i in product(sorted('СТРОКА'), repeat=5):  # sorted → алфавитный порядок!
    s = ''.join(i)
    n += 1
    if n % 2 == 0 and s[0] not in 'АСТ' and s.count('О') == 2:
        print(n)

Задание 9 — Анализ данных через электронные таблицы

Электронная таблица

f = open('9.txt')
for s in f:
    a = [int(x) for x in s.split()]   # split(';') если CSV с разделителем ';'

    a2 = [x for x in a if a.count(x) == 2]   # встречаются ровно 2 раза
    a1 = [x for x in a if a.count(x) == 1]   # уникальные элементы
    kr5 = [x for x in a if x % 5 == 0]       # кратные 5
    dv = [x for x in a if len(str(abs(x))) == 2]  # двузначные (с abs!)

    # ПРИМЕР условия:
    if len(a2) == 4 and len(a1) == 3:         # одно число дважды, остальные различны
        if max(a) not in a2:                  # максимум не повторяется
            print(n)


=СЧЁТЕСЛИ(диапазон; критерий)
=СЧЁТЕСЛИ(A:A; ">10")        — чисел >10
=СУММЕСЛИ(диапазон_условия; критерий; диапазон_суммирования)
=СУММЕСЛИ(A:A; ">10"; B:B)   — сумма B, где A>10
=СРЗНАЧЕСЛИ(диапазон_условия; критерий; диапазон_усреднения)
=СРЗНАЧЕСЛИ(A:A; ">10"; B:B)   — среднее B, где A>10

Задание 11 — Вычисление количества информации

Информационный объём

from math import *

# Минимальная мощность алфавита:
for n in range(1, 100000):
    i = ceil(log2(n))                # бит на символ
    k = 377                          # длина записи (из условия)
    V = ceil(i * k / 8)              # байт на одну запись
    if 23155 * V > 5536 * 1024:      # условие на объём
        print(n)
        break

# ФОРМУЛЫ:
# I = i * k        (I — объём, i — бит на символ, k — кол-во символов)
# N = 2**i         (N — мощность алфавита, i — бит на символ)
# "более X" → знак >    |   "не более X" → знак <=
# "не менее X" → знак >=
# Гбайт = 2**30, Мбайт = 2**20, Кбайт = 2**10

Задание 13 — Адресация в сети Интернет

Сети tcp/ip

from ipaddress import *

net = ip_network('1.2.3.4/255.255.255.192', 0)  # 0 = strict=False
# или: net = ip_network('1.2.3.4/26', 0)        # 26 единиц в маске

net[0]              # адрес сети
net[-1]             # широковещательный адрес
net[1]              # минимальный адрес ПК
net[-2]             # максимальный адрес ПК
net.netmask         # маска сети
net.num_addresses   # количество IP-адресов
net.num_addresses-2 # количество узлов

# Перебор IP с условием:
for ip in net:
    b = f'{int(ip):032b}'        # двоичное представление (32 бита)
    if b.count('1') % 11 == 0:
        k += 1

# Искать маску (два узла в разных сетях):
for mask in range(33):
    n1 = ip_network(f'120.91.95.213/{mask}', 0)
    n2 = ip_network(f'120.91.89.205/{mask}', 0)
    if n1 != n2:                # в разных сетях
        print(n1.netmask)

# Искать маску по адресу сети:
for mask in range(33):
    net = ip_network(f'192.75.64.98/{mask}', 0)
    if str(net.network_address) == '192.75.64.0':
        print(net.netmask)

Задание 14 — Системы счисления

Системы счисления — выражения

# ТИП А — кол-во/сумма цифр в записи выражения:
x = 4 * 3125**2019 + 3 * 625**2020   # выражение из задачи
k = 0
while x > 0:
    n = x % 25                        # цифра в нужной СС
    if n > 10: k += 1                 # кол-во цифр > 10
    # если просят СУММУ цифр: k += n  (а не k += 1!)
    x //= 25
print(k)

# ТИП Б — неизвестная цифра x (основание ≤ 36):
from string import printable
for x in printable[:27]:              # алфавит 27-ричной СС
    s = int('123' + x + '24', 27) + int('135' + x + '78', 27)
    if s % 26 == 0:
        print(s // 26)

# ТИП Б — если основание > 36 (по разрядам):
def superint(n, b):
    a = list(n)[::-1]
    s = 0
    for i in range(len(a)):
        s += int(a[i]) * b**i
    return s

for x in range(37):
    a = superint(f'123{x}', 37) + superint(f'4{x}59', 37)
    if a % 36 == 0:
        print(x, a // 36)
        break

# ТИП В — найти x с нужным числом нулей:
for x in range(1, 2031):
    s = 7**91 + 7**160 - x
    k = 0
    while s > 0:
        if s % 7 == 0: k += 1
        s //= 7
    if k == 70:
        print(x)

# Натуральные/положительные → перебор с 1, неотрицательные → с 0!

Задание 15 — Преобразование логических выражений

Логика

# Делимость:
def F(A, x):
    return (not (x % A == 0)) <= ((x % 28 == 0) <= (not (x % 49 == 0)))
for A in range(1, 1000):
    if all(F(A, x) for x in range(1, 1000)):
        print(A); break

# Два аргумента x, y:
def F(A, x, y):
    return (x + 2*y > A) or (y < x) or (x < 30)
for A in range(0, 1000):
    if all(F(A, x, y) for x in range(0, 1000) for y in range(0, 1000)):
        print(A); break

# Побитовая конъюнкция:
def F(A, x):
    return (x & 39 == 0) or ((x & 11 == 0) <= (not (x & A == 0)))
for A in range(0, 1000):
    if all(F(A, x) for x in range(0, 1000)):
        print(A); break

# Отрезки:
def f(x):
    b = 66 <= x <= 75      # отрезок B
    c = 71 <= x <= 85      # отрезок C
    a = a1 <= x <= a2      # искомый отрезок
    return (not a) <= (b == c)   # условие из задачи

ox = []
for i in (66, 75, 71, 85):      # границы всех отрезков
    ox += [i-0.1, i, i+0.1]

m = []
for a1 in ox:
    for a2 in ox:
        if a2 > a1 and all(f(x) == 1 for x in ox):
            # f(x)==1 если просят истинно, f(x)==0 если ложь
            m.append(a2 - a1)
print(min(m))   # min — наименьшая длина, max — наибольшая

Задание 16 — Рекурсивные алгоритмы

Рекурсивные функции

# СПОСОБ 1 — lru_cache:
from functools import lru_cache

@lru_cache(10000)
def G(n):
    if n <= 20: return n + 2
    return G(n - 3) + 1

def F(n): return 3 * G(n - 3) + 7

for n in range(1, 37811): G(n)   # заполняем кэш
print(F(37811))

# Если F(n + ...) → цикл ОБРАТНЫЙ: for n in range(10000, 1, -1)

# СПОСОБ 2 — через список:
G = [0] * 30000
for n in range(29999, 1, -1):       # обратный цикл, т.к. G(n+8)
    if n >= 28983: G[n] = n/20 + 36
    else: G[n] = G[n+8] - 5

F = [0] * 1000
for n in range(1, 1000):
    if n >= 23: F[n] = F[n-6] + 1441
    else: F[n] = 14 * (G[n-15] - 38)
print(F[993])

# СПОСОБ 3 — setrecursionlimit (на слабых ПК может не потянуть):
from sys import setrecursionlimit
setrecursionlimit(1000000)

Задание 17 — Обработка числовой последовательности

Последовательность — тройки/пары

a = [int(x) for x in open('17.txt')]

# Прогон по парам: range(len(a) - 1)
# Прогон по тройкам: range(len(a) - 2)
# Тройка срезом: tr = a[i:i+3]

# ПРОВЕРКИ:
len(str(abs(a[i]))) == 5             # пятизначное (с abs для отрицательных!)
abs(a[i]) % 18 == 0                  # кратное 18 (берём модуль!)
9 < abs(x) < 100                     # двузначное

# ПРИМЕР:
mx33 = max(x for x in a if abs(x) % 100 == 33)
otv = []
for i in range(len(a) - 2):
    s = a[i:i+3]
    if len([x for x in s if 9 < abs(x) < 100]) == 2:   # ровно 2 двузначных
        if sum(s)**2 < mx33:
            otv.append(sum(s))
print(len(otv), max(otv))

Задание 19–21 — Выигрышная стратегия

Теория игр

# 1 куча:
def f(s, m):        # s — камней, m — номер хода
    if s >= 132: return m % 2 == 0    # условие победы
    if m == 0: return 0
    h = [f(s+3, m-1), f(s+6, m-1), f(s*3, m-1)]   # ходы из задачи
    return any(h) if m % 2 != 0 else all(h)
    # any — у победителя; all — «при любом ходе противника»
    # ⚠ Для 19: all меняется на any, если в вопросе «неудачный ход»!

print('#19', min(s for s in range(1, 132) if f(s, 2)))
print('#20', [s for s in range(1, 132) if not f(s, 1) and f(s, 3)])
print('#21', min(s for s in range(1, 132) if not f(s, 2) and f(s, 4)))


# 2 кучи / 2 фишки:
def f(x, y, m):     # x, y — кучи/фишки, m — номер хода
    if (x + y) >= 77: return m % 2 == 0
    if m == 0: return 0
    h = [f(x+3,y,m-1), f(x*3,y,m-1), f(x,y+3,m-1), f(x,y*3,m-1)]
    return any(h) if m % 2 != 0 else all(h)
    # any — у победителя; all — «при любом ходе противника»
    # ⚠ Для 19: all меняется на any, если в вопросе «неудачный ход»!
print('#19', min(s for s in range(1, 65) if f(12, s, 2)))
print('#20', [s for s in range(1, 65) if not f(12, s, 1) and f(12, s, 3)])
print('#21', [s for s in range(1, 65) if not f(12, s, 2) and f(12, s, 4)])

Задание 22 — Многопроцессорные системы

Процессы

=ВПР(D2+0;$A:$G;7;0) # поиск времени выполнеия процесса А
=МАКС(E2:F2)+B2      # последняя мс процесса 
=МАКС(D2:E2)+1       # мс с которой начинается процесс

Задание 23 — Подсчёт количества маршрутов

Исполнитель — число программ

# a — стартовое число, b — конечное

# Увеличение (команды +3, +7, *2):
def F(a, b):
    if a == b: return 1
    if a > b: return 0              # перескочили
    return F(a+3, b) + F(a+7, b) + F(a*2, b)

# Уменьшение (команды -2, -4, //2):
def F(a, b):
    if a == b: return 1
    if a > b or a == 15: return 0 # перескочили или запрещённые числа
    return F(a-2, b) + F(a-4, b) + F(a//2, b)

# Обязательно пройти через числа X, Y → перемножаем участки:
print(F(8, 32) * F(32, 49) * F(49, 73))

Задание 24 — Обработка символьных строк

Длинная строка

# Регулярные выражения:
from re import finditer

# Символьные классы:
# [ABC]   — один из A, B, C
# [A-Z]   — диапазон A–Z
# [^ABC]  — не A, B, C
# .       — любой символ

# Квантификаторы:
# *       — 0 или больше
# +       — 1 или больше
# ?       — 0 или 1
# {n}     — ровно n
# {n,m}   — от n до m

# Группировка:
# [AB]+   — A или B подряд
# (AB)+   — пара AB подряд
# AB|CD   — AB или CD

# Экранирование: \*  \+  \{  \}  \[  \]  \(  \)  \.  \?  \|
# Пересекающиеся совпадения: r'(?=(шаблон))'
# * и + жадные — берут максимум

# ПРИМЕРЫ для ЕГЭ:
r'[1-9A-D][0-9A-D]*'               # 14-ричное число без ведущего нуля
r'[1-9A-D][0-9A-D]*[02468AC]'      # чётное 14-ричное число

# МЕТОД — накопление строки (скользящее окно):
a = open('24.txt').readline().strip()
s = ''
m = 0
k = 0; kY = 0
for i in a:
    s += i
    if i == 'Y': kY += 1
    if s[-4:] == '2025': k += 1
    while kY > 80:                   # ограничение на число Y
        if s[0] == 'Y': kY -= 1
        if s[:4] == '2025': k -= 1
        s = s[1:]
    if k >= 90: m = max(m, len(s))
print(m)

Задание 25 — Обработка целочисленной информации

Делители / множители / маски

# Проверка простоты:
def prost(n):
    return n > 1 and all(n % d != 0 for d in range(2, int(n**0.5)+1))

# Все делители (без 1 и самого числа):
def divs(n):
    a = set()
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            a.add(i)
            a.add(n // i)
    return a

# Только простые делители:
def prime_divs(n):
    a = set()
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            if prost(i): a.add(i)
            if prost(n // i): a.add(n // i)
    return a

# Маски (fnmatch):
from fnmatch import fnmatch
for i in range(18579, 10**10 + 1, 18579):   # шаг = делитель
    if fnmatch(str(i), '54?1?3*7'):          # ? = 1 символ, * = любые
        print(i, i // 18579)

Задание 26 — Сортировка целочисленной информации

Снегоуборщики / жадный алгоритм

a = open('26.txt')
N, K = [int(x) for x in a.readline().split()]
z = [int(a.readline()) for i in range(N)]     # мин. мощность для каждого района

sneg = [100000] * 1001                         # sneg[мощность] = мин. стоимость
for i in range(K):
    m, c = [int(x) for x in a.readline().split()]
    sneg[m] = min(sneg[m], c)                  # оставляем минимальную стоимость

for i in range(len(sneg)):
    sneg[i] = [sneg[i], i]                     # пары [стоимость, мощность]

sneg.sort(key=lambda x: (x[0], -x[1]))
# сортируем: дешевле, при равной стоимости — мощнее

stoim, mx = 0, 0
for i in z:
    for j in sneg:
        if i <= j[1]:                          # мощность >= требуемой
            stoim += j[0]
            mx = max(mx, j[1])
            break
print(stoim, mx)

Задание 27 — Анализ данных (кластеризация)

Кластеризация звёзд

# Расстояние (с типом z в списке):
def dist(a, b):
    x1, y1, z1 = a
    x2, y2, z2 = b
    return ((x2-x1)**2 + (y2-y1)**2)**0.5

# Центр кластера (медоид — точка с МИН суммой расстояний):
def centr(K):
    s = []
    for i in K:
        a = sum(dist(i, j) for j in K)
        s.append([a, i])
    return min(s)[1]

# ПРИМЕР (файл A — 2 кластера):
A = [[], []]
for s in open('27_A.txt'):
    x, y, t = s.replace(',', '.').split()
    x, y = float(x), float(y)
    if t == 'VII': t = '  VII'
    if y > 10: A[0].append([x, y, t])     # ← порог подбирай через len()!
    else:      A[1].append([x, y, t])

# ПРИМЕР (файл B — 3 кластера):
B = [[], [], []]
for s in open('27_B.txt'):
    x, y, t = s.replace(',', '.').split()
    x, y = float(x), float(y)
    if t == 'VII': t = '  VII'
    if y > 23:   B[0].append([x, y, t])
    elif y > 15: B[1].append([x, y, t])
    else:        B[2].append([x, y, t])

# Жёлтые звёзды (Z) — подсчёт:
k0 = len([p for p in A[0] if p[2][0] == 'Z'])
k1 = len([p for p in A[1] if p[2][0] == 'Z'])
print(min(k0, k1), max(k0, k1))

# Синие карлики (L + V) — расстояния до центра:
lv0 = [p for p in B[0] if p[2][0] == 'L' and p[2][2:] == 'V']
lv1 = [p for p in B[1] if p[2][0] == 'L' and p[2][2:] == 'V']
lv2 = [p for p in B[2] if p[2][0] == 'L' and p[2][2:] == 'V']
c0, c1, c2 = centr(B[0]), centr(B[1]), centr(B[2])
r = [dist(c0, p) for p in lv0] + [dist(c1, p) for p in lv1] + [dist(c2, p) for p in lv2]
print(int(min(r)*10000), int(max(r)*10000))

# МАКС диаметр внутри группы звёзд одного кластера:
def diam(k):
    s = []
    for i in k:
        a = max(dist(i, j) for j in k if dist(i, j) > 0)
        s.append(a)
    return max(s)

# АЛГОРИТМ РЕШЕНИЯ:
# 1. Прочитать файл, запятая → точка
# 2. Подобрать пороги (y>? / x>?) через print(len()) — числа должны быть разными
# 3. Найти центры через centr()
# 4. Отфильтровать звёзды по типу: z[0]=спектр, z[1]=подкласс, z[2:]=светимость
# 5. Посчитать расстояния / количества
# 6. Ответ: int(значение * 10000) — ЦЕЛАЯ ЧАСТЬ (не округление!)


                          Удачи на ЕГЭ!

Шпаргалка составлена командой Профиматики. Обновляется под каждый новый КИМ ФИПИ.