Algorithm
[파이썬] 백준 1676번: 팩토리얼 0의 개수
bbomi
2021. 7. 5. 23:36
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
방법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))