-- 예전 기록/BOJ

[ BOJ ] 2553 : 마지막 팩토리얼 수 ( SILVER 2 ) / Python

rejo 2024. 2. 3. 18:47

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)