Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача по Python

Мартин Стаффа Ученик (67), на голосовании 3 месяца назад
Напишите программу, определяющую количество чисел х из диапазона от 1 до введённого числа n включительно, для которых выполняются два условия.
Число x оканчивается на 2;произведение цифр числа х больше их сумма.
Например, при n=51 таких числе два, 32 и 42.
Формат ввода:
Вводится одно целое число
N больше 1 и меньше 10 000
Пример:
Ввод:
51
Вывод:
2
.
Голосование за лучший ответ
Сергей Просветленный (41817) 4 месяца назад
 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)]))
Татьяна Просветленный (36197) 4 месяца назад
 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))))) 
Похожие вопросы