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

알고리즘 - 수학

Posted by Kyun2da on August 29, 2020

1️⃣서론

백준 문제 1676번 팩토리얼 0의 개수 입니다. 파이썬(Python)으로 풀었습니다.

2️⃣문제 설명

이 문제는 팩토리얼수의 맨 뒤에오는 0의 개수를 구하는 문제입니다.

3️⃣풀이

당연하게도 수의 범위는 500이하의 수이기 때문에 500이하의 팩토리얼을 계산하기에는 수의 범위가 모자랍니다.

그래서 우리는 0을 구하는 방법을 알아야 합니다. 뒤에 0이있다는 말은 곧 이 수가 10으로 곱해진 수가 있다는 것을 의미합니다.

10의 개수를 구하는 방법은 곧 2와 5의 개수를 구하는 것입니다.

하지만 우리는 5의 개수만 세어도 10의 개수를 알 수 있습니다. 왜냐하면 언제나 2의 개수가 5의 개수보다 많기 때문이죠.

당장 10! 만 봐도 2의 개수가 압도적으로 많은 것을 확인할 수 있습니다. 따라서 우리는 팩토리얼의 수에서 5의 개수를 구하면 됩니다.

소스코드를 보시겠습니다.

4️⃣ 소스코드

1
2
3
4
5
6
7
8
9
10
N = int(input())

ans = 0
# 주어진 범위가 500이기때문에 125까지만 생각하면 된다.
for i in range(2, N + 1):
    if i % 5 == 0: ans += 1
    if i % 25 == 0: ans += 1
    if i % 125 == 0: ans += 1

print(ans)

5️⃣ 마치며..

질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️