Задание EGEINF931D9C: Обработка текстового файла

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Обработка текстового файла.

Учебные темы: Обработка символьных данных. Встроенные функции языка программирования для обработки символьных строк. Алгоритмы обработки символьных строк: подсчёт количества появлений символа в строке, разбиение строки на слова по пробельным символам, поиск подстроки внутри данной строки, замена найденной подстроки на другую строку. Генерация всех слов в некотором алфавите, удовлетворяющих заданным ограничениям. Преобразование числа в символьную строку и обратно.

Впишите правильный ответ.

 Рисунок из условия ФИПИЗадание выполняется с использованием прилагаемых файлов.

 

Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита. Определите в этом файле последовательность идущих подряд символов, представляющих собой запись максимального чётного 14-ричного числа. В ответе запишите количество символов (значащих цифр в записи числа) в этой последовательности.

Примечание. Латинские буквы A, B, C и D означают цифры из алфавита 14-ричной системы счисления.

Скачать файл задания (TXT, ФИПИ)


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.9 Обработка символьных данных. Встроенные функции языка программирования для обработки символьных строк. Алгоритмы обработки символьных строк: подсчёт количества появлений символа в строке, разбиение строки на слова по пробельным символам, поиск подстроки внутри данной строки, замена найденной подстроки на другую строку. Генерация всех слов в некотором алфавите, удовлетворяющих заданным ограничениям. Преобразование числа в символьную строку и обратно
Тип ответа:Краткий ответ
Номер: 931D9C
НЕ РЕШЕНО Ответить

Решение задания EGEINF931D9C

Ответ: 2598

В основании 14 допустимы цифры 0–9 и буквы A, B, C, D со значениями 10, 11, 12, 13. Любой другой символ разрывает запись числа.
Основание 14 чётное, поэтому чётность числа определяется последней цифрой. Допустимые последние символы: 0, 2, 4, 6, 8, A, C. Начальные нули не являются значащими цифрами: пропускаем их до первого ненулевого символа допустимого участка.
В каждом непрерывном участке допустимых символов фиксируем первый ненулевой символ. На каждом чётном конце рассматриваем число от этого начала до текущей позиции. Начинать правее невыгодно: потеря ненулевого старшего разряда уменьшает число. Просмотр всех чётных концов гарантирует, что максимальное число не потеряется.
Для сравнения записей без ведущих нулей сначала сравниваем длины: более длинная запись означает большее число. При равных длинах сравниваем строки слева направо. Порядок символов 0–9, A–D совпадает с порядком значений цифр. Поэтому сравнение пар (длина, строка) даёт именно сравнение чисел.
Сохраните файл задания под именем 1_24.txt рядом с программой. Полная программа на Python 3:

s = open('1_24.txt', encoding='utf-8').read().strip()
digits = '0123456789ABCD'
even = '02468AC'
begin = None
best = ''
for i, symbol in enumerate(s):
    if symbol not in digits:
        begin = None
        continue
    if begin is None:
        if symbol == '0':
            continue
        begin = i
    if symbol in even:
        candidate = s[begin:i + 1]
        if (len(candidate), candidate) > (len(best), best):
            best = candidate
print(len(best))

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

ХарактеристикаЗначение
Символов в файле9000000
Первая позиция максимального числа, счёт с 12
Последняя позиция2599
Значащих цифр2598
Первые 12 символов825016439704
Последние 12 символов650108946352

Длина равна 2599 − 2 + 1 = 2598. Первый символ 8 ненулевой; последний 2 обозначает чётную цифру. Все символы между ними входят в алфавит основания 14.
Независимая проверка выполнена двумя способами: разбиением по недопустимым символам с удалением ведущих нулей и нечётного хвоста, а также точным вычислением целого значения по правилу Nновое = 14Nстарое + цифра. Оба способа нашли ту же последовательность с теми же границами. Проверяется максимальное числовое значение, а не только длина произвольного фрагмента.
Ответ: 2598.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF931D9C.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.