(И. Митин) В файле содержится последовательность натуральных чисел, по модулю не превышающих \(100000.\) Определите количество троек последовательности, в которых есть хотя бы одна пара взаимно противоположных чисел (одинаковых по модулю с разными знаками как, например, \(-9\) и \(9)\) и все элементы тройки меньше максимального элемента последовательности, произведение цифр которого оканчивается на \(42.\) В ответе запишите количество найденных троек, затем минимальное по модулю произведение пары взаимно противоположных чисел в таких тройках. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Решение:
Python
def prod_dig(n):
ans = 1
for c in str(abs(n)):
ans *= int(c)
return ans
nums = [int(x) for x in open('6070.txt')]
m42 = max(x for x in nums if prod_dig(x) % 100 == 42)
q, mp = 0, float('inf')
for a, b, c in zip(nums, nums[1:], nums[2:]):
if (a == -b or a == -c or b == -c) and all(x < m42 for x in (a, b, c)):
q += 1
pr = []
if a == -b:
pr.append(-a * b)
if a == -c:
pr.append(-a * c)
if b == -c:
pr.append(-b * c)
mp = min(mp, min(pr))
print(q, mp)
Ответ: \(2458 \,\, 121\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене