https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
문제 해석
N!의 맨 뒷자리 0의 개수를 구한다.
코드
import sys
from collections import deque
input = sys.stdin.readline
def factorial(n):
factolist = deque([1, 1])
if n == 0 or n == 1:
return 0
else:
for i in range(2, n+1):
factolist.append(factolist[-1] * i)
factolist.popleft()
factorialZero = str(factolist[-1])
count = 0
while True:
if int(factorialZero[-1]) != 0:
break
else:
count += 1
factorialZero = factorialZero[:-1]
return count
n = int(input())
print(factorial(n))
문제 풀이
말 그대로 N!의 맨 뒷자리 0의 개수를 구한다.
가령 5! = 120, 맨 뒷자리 0의 개수는 1개이다.
또 다른 예를 들자면 10! = 3,628,800이며, 맨 뒷자리 0의 개수는 2개이다.
이렇게 구한 팩토리얼의 값을 문자열로 바꿔, 0의 개수를 세주면 된다.
'백준' 카테고리의 다른 글
[BOJ/python] 2057번 팩토리얼 분해 (1) | 2022.10.25 |
---|---|
[BOJ/python] 14651번 걷다보니 신천역 삼 (Large) (0) | 2022.10.22 |
[BOJ/python] 10826번 피보나치 수 4 (2) | 2022.09.26 |
[BOJ/python] 14729번 칠무해 (0) | 2022.09.26 |
[BOJ/python?] 18825번 눈치게임 A+B! A-B! A+B! 터렛! A+B! 피보나치 함수! A+B! A-B! A+B! 어린 왕자! A+B! ACM Craft! A+B! A-B! A+B! 습격자 초라기! A+B! 벡터 매칭! A+B! A-B! A+B! A/B! A+B! 터렛! A+B! A-B! A+B! 분산처리! A+B!.. (1) | 2022.09.25 |