Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

Завершающие нули факториала

03.06.2021, 08:09. Показов 5888. Ответов 9

Студворк — интернет-сервис помощи студентам
Вычислить количество завершающих нулей факториала заданного числа:
Python
1
2
3
4
null_factorial(6)=1
# 6! = 1*2*3*4*5*6=720 --> 1
null_factorial(12)=2
#12!=479001600-->2
ВАЖНО!!!
Нельзя вычислять факториал, найти другой способ вычисления нулей.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2021, 08:09
Ответы с готовыми решениями:

Убрать из переменной завершающие нули
Здравствуйте! Подскажите пожалуйста, у меня переменная $params выдаёт 100.00, как можно убрать ".00"? Оставить чисто 100 ...

Какие есть функции, завершающие работу программы
известно, что если в функции main встретится "return x;" , то программа завершается. можно ли завершать программу из других функций? чтото...

Delphi -> ADO -> ODBC -> DBF: Как убрать завершающие пробелы?
Subj. В смысле как избавиться от завершающих пробелов в полях типа Char?

9
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
03.06.2021, 08:32
AlexMarkov, минимум(количество четных чисел, количество чисел кратных 5) минус (количество кратных 10) плюс счетчик (количество нулей у кратных 10)
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
03.06.2021, 08:50  [ТС]
Gdez, количество четных чисел подсчитаного факториала? Почему 5 понятно, конечный ноль получается только тогда, когда в составе факториала число имеет 10. Таким образом, посчитав количество десяток в факториале, мы узнаем количество конечных нулей.
Вот этот пример функционален для значений факториала из чисел до 1000:
Python
1
2
import math
math.floor(n/5) + math.floor(n/25)
При значении в 1000 получается 240, а правильный результат тестов 249?
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
03.06.2021, 08:58
Лучший ответ Сообщение было отмечено AlexMarkov как решение

Решение

AlexMarkov, насчет четных и кратных 10 спутал с задачей - последняя цифра факториала не равная 0
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from math import factorial
def null_factorial(n):
    cnt = 0
    for i in range(5, n+1, 5):
        tmp5 = i
        while tmp5 % 5 == 0:
            cnt += 1
            tmp5 //= 5
    return cnt
 
num = 11111
print(null_factorial(num))
g = factorial(num)
print(len(str(g)) - len(str(g).rstrip('0')))
Добавлено через 3 минуты
А предыдущий комментарий - алгоритм -> ноль в конце может дать только произведение четных чисел и чисел, оканчивающихся на 5, плюс сами числа, оканчивающиеся на 0
Для факториала - количество нулей в конце равно степени 5 при разложении на простые делители
2
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
03.06.2021, 09:04  [ТС]
Gdez, при num=30 результат 6 , правильно 7,что то не так)

Добавлено через 2 минуты
Gdez, условием по двум решениям по тайм-ауту не проходит
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
03.06.2021, 09:17
AlexMarkov,
num=30 результат 6
Исправлено в 4-й строчке на n+1

Добавлено через 2 минуты
условием по двум решениям по тайм-ауту не проходит
Последние две строчки в коде убрал? - они тебе для проверки
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
03.06.2021, 09:18  [ТС]
Gdez, решение правильное я так быстро никогда бы не решилGdez, две строчки понятно, нужна только функция.
Ну вот тайм-аут? Говорят решение с рекурсией проходит.
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
03.06.2021, 09:25
Лучший ответ Сообщение было отмечено AlexMarkov как решение

Решение

AlexMarkov, попробуй
Python
1
2
3
4
5
6
7
8
9
def null_factorial(n):
    cnt = 0
    while n>4:
        cnt += n//5
        n //= 5
    return cnt
    
num = 1234567898
print(null_factorial(num))
2
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
03.06.2021, 09:32  [ТС]
Лучший ответ Сообщение было отмечено Gdez как решение

Решение

Gdez,
Вот это решение также норм:
Python
1
2
def null_factorial(n):
    return 0 if int(n/5) < 1 else int(n/5) + int(null_factorial(n/5))
2
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
03.06.2021, 09:38
AlexMarkov, только вместо int(n/5) -> n//5
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2021, 09:38
Помогаю со студенческими работами здесь

Описать рекурсивные функции вычисляющие значения факториала и двойного факториала
Написать блок схему и программу согласно заданию. Описать рекурсивные функции Fact(n) и Fact2(N) вещественного типа, вычисляющие значения...

Описать рекурсивные функции, вещественного типа, вычисляющие значение факториала и двойного факториала
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значение факториала N! и двойного факториала N!!...

Напишите программу, которая ищет нули в таблице чисел и печатает True, если нули нашлись
Я знаю, что такая тема уже была на этом форуме, но всё же не хочу копировать чужой код. Создал свой, а он работает некорректно. Задание...

Удалить нули из массива! Как удалить нули?но чтобы рисунок остался!
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { int r,c; r=14; c=16;

Скопировать в новый текстовый файл все символы исходного, заменив все нули на единицы, а единицы на нули
Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой символа 0 на символ 1 и наоборот


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru