Python/백준

1676_팩토리얼 0의 개수

728x90

문제는 더보기!

더보기

팩토리얼 0의 개수

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB 34303 16221 13483 47.885%

문제

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

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

2

예제 입력 2 복사

3

예제 출력 2 복사

0

 

 

팩토리얼 리스트를 500까지 만든 후에 문자열로 변환해서 0을 검출해내는 코드로 작성했다.

 

t = int(input())
fac =[1]
for i in range(1,501):
    fac.append(fac[-1] * i)


count = 0
for i in reversed(str(fac[t])):
    if i == '0':
        count +=1
    else:
        break

print(count)

 

 

 

이렇게 해도 통과되긴 했는데 뭔가 효율적인 방법이 있을 것 같아 더 조사해 보니 역시 있었다!

 

n에서 5로 나누어떨어지는게 몇개인지 구한다

 

25같은경우는 5로 나누어지는게 2개기 때문에 이런경우만 더해주면 된다.

 

n = int(input())
def five_count(n):
    cnt = 0
    while n != 0:
        n //= 5
        cnt += n
    return cnt
    
print(five_count(n))
728x90

'Python > 백준' 카테고리의 다른 글

10828_스택  (0) 2022.01.31
2004_조합 0의개수  (0) 2022.01.30
9375_패션왕신해빈  (0) 2022.01.28
1010_다리놓기  (0) 2022.01.27
11050_이항계수  (0) 2022.01.25