Напишите функцию, которая будет принимать число n и возвращать количество нулей, стоящих в конце факториала этого числа.
Формула факториала: n! = 1 * 2 * 3 * ... * n
Подсказка: не нужно вычислять факториал. Постарайтесь найти другой способ определения количества нулей.
trailing_zeros(0) ➞ 0 # 0! = 1 # Нулей нет trailing_zeros(6) ➞ 1 # 6! = 120 # 1 нуль в конце trailing_zeros(1000) ➞ 249 # 1000! имеет 249 нулей в конце
"""
1. Никакой факториал не будет иметь меньше нулей, чем факториал меньшего числа.
2. Каждое умножение на 5 добавляет 0 к факториалу. Поэтому сперва мы вычислим, какой наибольший множитель 5 меньше `n` (`n // 5`) и добавим к счетчику столько нулей.
3. Каждое умножение на 25 добавляет два нуля, так что далее мы мы добавим к счетчику столько нулей, сколько получится от целочисленного деления n на 25.
4. Продолжаем в том же духе для всех чисел, кратных 5 и меньших (или равных) n.
"""
def trailing_zeros(n):
pow_of_5 = 5
zeros = 0
while n >= pow_of_5:
zeros += n // pow_of_5
pow_of_5 *= 5
return zeros Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…