문제풀이/BOJ

[Python] BOJ/백준 1676번 팩토리얼 0의 개수

서채리 2021. 9. 3. 00:40

[문제]

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 


[풀이]

끝자리가 0이 되려면 2와 5를 곱했을 경우에만 10이 나와 끝에 0이 추가된다.

 

따라서 소인수분해 했을 때 2와 5의 최소값을 구하면 되는 문제인데 숫자가 커질수록 5가 2보다 적게 나와 5의 개수만 구해도 되겠다는 생각이 들었다.

 

따라서 n이 5 이상일 동안 cnt에 5로 나눴을 때의 몫을 더한 후 출력한다.

 


[코드]

import sys

if __name__ == '__main__':
    n = int(sys.stdin.readline())

    cnt = 0
    while n >= 5:
        cnt += n // 5
        n //= 5
    print(cnt)