Задание 17

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

Скачать файл

Теория

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

Решение

Программа (Python)

f = open('demo_2024_17.txt')
n=[]
max13 = 0
#считываем построчно строки в список n и ищем
#max13 - максимальное число, оканчивающееся на 13 
for line in f:
    number = int(line)
    if (number % 100 == 13) and (number > max13):
        max13 = number
    n.append(number)
print('max13 =',max13)
counter = 0
maxsum = 0
#с начала и до предпредпоследнего числа берем
#три подряд идущих чисел
for k in range(0,len(n)-2):
    n1 = n[k]
    n2 = n[k+1]
    n3 = n[k+2]
#ровно 2 числа из тройки >=100 и <1000
#проверяем через длину строки - короче
#чем >=100 and <=999 для чисел
    if (len(str(n1))==3 and len(str(n2))==3 and len(str(n3))!=3) or \
       (len(str(n1))==3 and len(str(n3))==3 and len(str(n2))!=3) or \
       (len(str(n2))==3 and len(str(n3))==3 and len(str(n1))!=3):
        sum = n1+n2+n3
        if sum <= max13:
            counter += 1
            if sum > maxsum:
                maxsum = sum
print(counter, maxsum)

Результат 959 и 97471 

Ответ

959 и 97471 (Время не более 10 минут)

Яндекс.Метрика