Python задача без break , list and more

Рейтинг: 0Ответов: 1Опубликовано: 12.02.2023

Дано натуральное число N, которое не содержит цифры 0. Определите произведение его цифр, кратных z. Если в числе нет цифр кратных z, то выведите 0.
Пример вывода: 432 2
Вывод: 8
Мой код:

n, z = map(int, input().split())
p = 1
while n != 0:
    if n % 10 != 0:
        if n % 10 % z == 0:
            p = p * n % 10
    n //= 10
    if n % 10 == 0:
        print(end="")
    n //= 10
if p == 1:
    print('0')
if p != 1:
    print(p)

Ответы

▲ 1

Вариант покороче, корректно работающий при z=1.

n, z = map(int, input().split())
p = 0
while n != 0:
    n, rest = divmod(n, 10)
    if rest != 0 and rest % z == 0: # поскольку в условии сказано, что n не содержит 0, то 'rest != 0 and' можно удалить
        p = max(p, 1) * rest
print(p)
1111 1
1
432 2
8