Задание №17 — Обработка числовой информации
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10000 до 10000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых оба числа оканчиваются на нечётные цифры, различные для элементов в паре, затем минимальное из произведений модулей элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Правильный ответ
1020 17197
Пояснение
Решение:
Считаем файл в список целых чисел и просмотрим все пары соседних элементов — их на единицу меньше, чем самих чисел.
Последняя цифра числа — это остаток от деления его модуля на 10. Модуль здесь принципиален: в Python для отрицательных чисел остаток считается по-другому, например , хотя число оканчивается на 9.
Пара подходит, если обе последние цифры нечётные и при этом различны. Одновременно со счётчиком ведём минимум произведения модулей элементов пары.
a = [int(s) for s in open('44118_17.txt')]
count = 0
best = None
for x, y in zip(a, a[1:]):
dx, dy = abs(x) % 10, abs(y) % 10
if dx % 2 == 1 and dy % 2 == 1 and dx != dy:
count += 1
p = abs(x) * abs(y)
if best is None or p < best:
best = p
print(count, best) # 1020 17197Программа находит 1020 подходящих пар, наименьшее произведение модулей равно 17197.Ответ: 1020 17197