개발/algorithm

[백준 1676번] 팩토리얼 0의 개수 - python

zzi_on2 2022. 2. 14. 14:28

문제 링크 

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

 

1676번: 팩토리얼 0의 개수

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

www.acmicpc.net

풀이

- 팩토리얼을 계산한 결과값에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 문제 

- 결과값을 소인수 분해서 2 * 5의 개수를 구하면 된다. 

- 2부터 N까지 소인수분해하여 각 숫자별 소인수 2의 개수를 two, 5의 개수를 five에 누적하여 더한다. 

- min(two,five) 출력하면 2* 5의 개수 

num = int(input())

d = 2

two = 0
five = 0 

# 소인수분해 
for n in range(1, num+1):
  d = 2
  while d <= n:
    if n % d == 0:
      n = n // d 
      # 2의 개수
      if d == 2 :
        two += 1 
      # 5의 개수 
      if d == 5:
        five += 1 
    else:
      d = d + 1 
    
print(min(two,five))