N!의 값을 계산한 후에, 0이 아닌 가장 낮은 자리 수를 구하시오.
예를 들어, 4! = 24 이기 때문에, 0이 아닌 가장 낮은 자리 수는 4이다. 또, 5! = 120이기 때문에, 0이 아닌 가장 낮은 자리 수는 2 이다.
입력
첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다.
출력
첫째 줄에 N!의 0이 아닌 마지막 자리수를 출력한다.
풀이 과정
N! 을 구하기 위해 1부터 N까지 계속 곱하면서, 가장 낮은 자리 수가 0일 때 이를 모듈러 연산으로 계속 지워줌으로써 0이 아닌 마지막 자리수를 구한다. 계산값이 유지되도록 충분히 큰 수로 나눈 나머지를 유지해주었다.
import sys
input = sys.stdin.readline
n = int(input().rstrip())
now = 1
for i in range(1, n+1):
now *= i
now %= 100000000
while now > 10 and now % 10 == 0: now //= 10
print(now % 10)
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 11780 : 플로이드 2 ( GOLD 2 ) / Python (1) | 2024.02.03 |
---|---|
[ BOJ ] 15658 : 연산자 끼워넣기 (2) ( SILVER 2 ) / C (0) | 2024.02.03 |
[ BOJ ] 17829 : 222-풀링 ( SILVER 2 ) / Python (0) | 2024.02.03 |
[ BOJ ] 13913 : 숨바꼭질 4 ( GOLD 4 ) / Python (0) | 2024.02.03 |
[ BOJ ] 17130 : 토끼가 정보섬에 올라온 이유 ( GOLD 4 ) / Python (0) | 2024.02.03 |