사용자 도구

사이트 도구


ps:problems:boj:1676

팩토리얼 0의 개수

ps
링크acmicpc.net/…
출처BOJ
문제 번호1676
문제명팩토리얼 0의 개수
레벨실버 5
분류

팩토리얼

시간복잡도O(logn)
인풋사이즈n<=600
사용한 언어Python 3.13
제출기록32412KB / 36ms
최고기록32ms
해결날짜2026/01/26

풀이

  • 10^e가 n!을 나누는 가장 큰 e값, 다시말해 n!에 포함된 10의 개수를 구하면 된다. 10=2*5 이므로 이는 n!에 포함된 2의 개수와 5의 개수 중 작은 것을 취하면 되는데, 이 값은 언제나 5의 개수가 작으므로, 결국 n!에 포함된 5의 개수만 구하면 된다. 르장드르 공식을 사용하면 간단하다.
    • n의 범위가 매우 작아서, 그냥 n//5 + n//25 + n//125 를 계산하는 것 만으로도 풀린다.
  • 시간복잡도는 O(logn) 이지만.. 위에서 말했듯 n이 워낙 작아서 그냥 상수에 가깝다..

코드

"""Solution code for "BOJ 1676. 팩토리얼 0의 개수".

- Problem link: https://www.acmicpc.net/problem/1676
- Solution link: http://www.teferi.net/ps/problems/boj/1676
"""


def main():
    N = int(input())
    count = 0
    while N := N // 5:
        count += N
    print(count)


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
W T M K᠎ J
 
ps/problems/boj/1676.txt · 마지막으로 수정됨: 2026/01/26 08:26 저자 teferi