№17 · решено
Тройки, ровно два двузначных, квадрат суммы
В файле лежит последовательность целых чисел от −100 000 до 100 000. Тройкой называем три соседних элемента. Найдите количество троек, в которых ровно два числа двузначные, а квадрат суммы элементов тройки меньше максимального элемента последовательности, оканчивающегося на 33. В ответе запишите два числа через пробел: сначала количество найденных троек, затем наибольшую из сумм элементов таких троек.
Источник: ФИПИ (банк), № 29971
Скачать файл: task_29971_A.txt. В редакторе он уже лежит рядом с кодом, открывай как на экзамене: open('task_29971_A.txt').
Ответвпиши то, что вывела программа
Показать разбор
- Прочитай числа из файла в список.
- Напиши функцию d: число двузначное. Минус не считается, поэтому бери len(str(abs(x))) == 2.
- До цикла найди максимум среди чисел, у которых последние две цифры 33.
- Пройди по тройкам циклом до len(a) - 2. Ровно два двузначных проверь сложением: d(x1) + d(x2) + d(x3) == 2.
- Если квадрат суммы тройки меньше максимума, добавь сумму в список c.
- Напечатай длину списка и его максимум.
a = [int(line) for line in open('task_29971_A.txt')]
def d(x):
return len(str(abs(x))) == 2
mx = max(x for x in a if str(x)[-2:] == '33')
c = []
for i in range(len(a) - 2):
x1, x2, x3 = a[i], a[i + 1], a[i + 2]
if d(x1) + d(x2) + d(x3) == 2:
if (x1 + x2 + x3) ** 2 < mx:
c.append(x1 + x2 + x3)
print(len(c), max(c))