Задание:
В файле содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13. Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Примечание: файлы в архиве с демоверсией ЕГЭ-2024 по информатике
Решение (программное)
# Определим функцию для определения трехзначности.
def d3(x):
return 100 <= x <= 999
# считаем последовательность
nums = [int(x) for x in open('17_2024.txt')]
# максимальное значение, оканчивающееся на 13
mx13 = max(x for x in nums if x % 100 == 13)
# список найденных сумм
sm = []
# переберем все тройки
for a, b, c in zip(nums, nums[1:], nums[2:]):
if d3(a) + d3(b) + d3(c) == 2 and a+b+c<= mx13:
sm.append(a+b+c)
# вывод искомых чисел
print(len(sm), max(sm))
Ответ: 959 97471
Решение (электронные таблицы)
В столбце B определим все числа, оканчивающиеся на 13.
B1 =ЕСЛИ(ОСТАТ(A1;100)=13;A1;0)
В столбце С определим признак трехзначности. Для удобства подсчета умножим логическое значение на 1.
C1 =И(A1>=100;A1<=999)*1
В ячейке F1 определим значение максимального элемента, оканчивающегося на 13.
F1 =МАКС(B1:B6634)
В столбце D, начиная с 3 троки, запишем условную функцию, которая будет выводить сумму, если сумма элементов в текущей и двух предыдущих строках удовлетворяет условиям задачи, и пустую строку, если не удовлетворяет.
D3 =ЕСЛИ(И(СУММ(C1:C3)=2;СУММ(A1:A3)<=$F$1);СУММ(A1:A3);"")
Количество найденных сумм определим с помощью функции СЧЁТ
F3 =СЧЁТ(D1:D6634)
Максимальное значение суммы найдем с помощью функции МАКС
F4 =МАКС(D1:D6634)
Ответ: 959 97471
Источник: Информатика с Джобсом | ЕГЭ