https://www.acmicpc.net/problem/1676
방법1: math.factorial을 통해 n 팩토리얼을 계산한 뒤, str로 바꿔주고 뒤집어줍니다.
이후 0이 끝날 때까지 개수를 세주고, 끝나면 break을 해줍니다.
from math import factorial
n = int(input())
cnt = 0
for x in str(factorial(n))[::-1]:
if x != '0':
break
cnt += 1
print(cnt)
방법2 (더 효율적):
n에서 5로 나눠 떨어지는 수가 몇개인지 구하는 방법입니다.
예를 들어 n=100인 경우, 100 // 5 -> 20개입니다.
그러나 여기서 100의 인수인 25는 5를 2개 추가로 가지고 있기 때문에, 따로 더 세줘야 합니다.
(100 // 25 -> 4개)
즉 100!의 0의 개수는 20+4 = 24개가 됩니다.
n = int(input())
def five_count(n):
cnt = 0
while n != 0:
n //= 5
cnt += n
return cnt
print(five_count(n))
'Algorithm' 카테고리의 다른 글
[파이썬] 백준 1475번: 방번호 (0) | 2021.07.07 |
---|---|
[파이썬] 백준 1927번, 11279번, 11286번: 최소 힙, 최대 힙, 절대값 힙 (0) | 2021.07.06 |
[파이썬] 프로그래머스: 모의고사 (0) | 2021.07.04 |
[파이썬] 백준 1931번: 회의실 배정 (0) | 2021.07.02 |
[파이썬] 백준 11399번: ATM (0) | 2021.07.01 |