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

Задание 24. Информатика. ЕГЭ 2026. Основная волна. 19.06.2026

Просмотры: 1195
Изменено: 29 июня 2026

Текстовый файл состоит из заглавных букв латинского алфавита - цифр римской системы счисления \(I, \, V, \, X, \, L, \, C, \, D, \, M.\)

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

Для выполнения этого задания следует написать программу.

Примечание.

В римской системе счисления приняты следующие правила:

  1. в качестве цифр используют заглавные латинские буквы \(I, \, V, \, X, \, L, \, C, \, D, \, M,\) числовое значение которых \(1, \, 5, \, 10, \, 50, \, 100, \, 500\) и \(1000\) соответственно;
  2. цифры \(V, \, L, \, D\) никогда не повторяются;
  3. цифры \(I, \, X, \, C, \, M\) могут повторяться не более трёх раз подряд;
  4. если меньшая цифра стоит слева от большей, её значение вычитается из большей; вычитать можно только одну цифру \(I, \, X\) или \(C;\) вычитаемое не может быть меньше одной десятой от уменьшаемого;
  5. если цифра стоит справа от большей или равной, их значения складываются;
  6. цифры в записи числа располагаются слева направо в порядке невозрастания их числового значения за исключением случаев вычитания.

Например, римская запись \(MMXXVI\) корректна обозначает число \(2026,\) а запись \(MDDIVXXX\) некорректна.

Решение:

Python


from re import finditer

def conv(rome):
    rd = {'M': 1000, 'D': 500, 'C': 100, 'L': 50, 'X': 10, 'V': 5, 'I': 1}
    ans = 0
    
    for a, b in zip(rome, rome[1:]):
        ans += -rd[a] if rd[a] < rd[b] else rd[a]
    ans += rd[rome[-1]]
    return ans

s = open('24.txt').readline().strip()
ml = 0
nums = set()

for g in finditer(r'(?=(M{,3}(?:CM|CD|D?C{,3})(?:XC|XL|L?X{,3})(?:IX|IV|V?I{,3})))', s):
    tmp = g.group(1)
    lt = len(tmp)
    if lt > ml:
        ml = lt
        nums = {tmp}
    elif lt == ml:
        nums.add(tmp)

res = {conv(r) for r in nums}
print(min(res))

Ответ: \(2388\)

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

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

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