Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Задача по Python

Напишите программу, определяющую количество чисел х из диапазона от 1 до введённого числа n включительно, для которых выполняются два условия.
Число x оканчивается на 2;произведение цифр числа х больше их сумма.
Например, при n=51 таких числе два, 32 и 42.
Формат ввода:
Вводится одно целое число
N больше 1 и меньше 10 000
Пример:
Ввод:
51
Вывод:
2
.

По дате
По рейтингу
Аватар пользователя
Просветленный
1234567
 def funct(n: int) -> int:  
    n, r = list(map(int, list(str(n)))), 1 
    for x in n:  
        r = r * x 
    return n[-1] == 2 and r > sum(n)  
  
print(len([n for n in range(1, int(input())+1) if funct(n)])) 
Аватар пользователя
Просветленный
12345678910111213141516171819202122232425262728293031323334
 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 строку

12
 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)))))