def product_of_digits(number):
product = 1
while number > 0:
digit = number % 10
product *= digit
number //= 10
return product
def sum_of_digits(number):
total = 0
while number > 0:
digit = number % 10
total += digit
number //= 10
return total
def count_special_numbers(n):
count = 0
for x in range(1, n + 1):
if x % 10 == 2: # число оканчивается на 2
if product_of_digits(x) > sum_of_digits(x): # произведение цифр больше их суммы
count += 1
return count
# Ввод числа n
n = int(input("Введите число n: "))
# Проверка условия на допустимый диапазон n
if 1 < n < 10000:
result = count_special_numbers(n)
print(result)
else:
print("Число должно быть больше 1 и меньше 10 000.")
Объяснение программы:
Функция product_of_digits вычисляет произведение цифр числа.
Функция sum_of_digits вычисляет сумму цифр числа.
Функция count_special_numbers проходит по всем числам от 1 до n и проверяет два условия:
число оканчивается на 2 (x % 10 == 2)
произведение цифр числа больше их суммы (product_of_digits(x) > sum_of_digits(x)).
Основная часть программы считывает вводимое число, проверяет его на соответствие диапазону, и выводит результат.
и программа в 1 строку
print(sum(1 for x in range(2, int(input()) + 1, 10) if (p:=1) and all((p:=(p*int(d))) and True for d in str(x)) and p > sum(map(int, str(x)))))
Число x оканчивается на 2;произведение цифр числа х больше их сумма.
Например, при n=51 таких числе два, 32 и 42.
Формат ввода:
Вводится одно целое число
N больше 1 и меньше 10 000
Пример:
Ввод:
51
Вывод:
2
.