а) произведение разрядов больше 35;
б) хотя бы один из разрядов равен 7.
В ответе запишите два целых числа: наибольшее из таких чисел и их количество (через пробел).
Можете объяснить как это сделать? Я недопонимаю как записать произведение разрядов.


from math import prod
def digiter(n):
while n != 0: yield n % 10; n //= 10
n = 8817
last = 55527
step = [10] * 5 + [4] + [1] * 8 + [8] + [10] + [20] # кольцо внутри сотни
cnt = 0
i = 0
while n 35)
n += 100
dl = list(digiter(n))
else:
dp = prod(dl)
if dp > 35: cnt += 1
n += step[i % len(step)]
i += 1
print(last, cnt)
Внутри каждой сотни выбираем не все числа подряд, а только те, которые содержат 7 и не содержат 0 в младших разрядах (произведения с нулём уж точно не превышают 35). Для этого строим кольцо из шагов: 17 + 10 = 27, 27 + 10 = 37, 67 + 4 = 71, 79 + 8 = 87, и т.д. В каждую сотню мы попадаем, начиная с 17, и последнее число в сотне - 97, всего их - 17 шт. 55527 10958
def product_of_digits(n):
product = 1
while n > 0:
product *= n % 10
n //= 10
return product
count = 0
max_num = 0
for i in range(8800, 55536):
if product_of_digits(i) > 35 and '7' in str(i):
count += 1
max_num = i
print(max_num, count)