백준 2553 마지막 팩토리얼 수 (Python)

Joowan Park·2023년 7월 26일
0

코딩

목록 보기
6/28
import sys
import math
input = sys.stdin.readline
N = int(input())
result = 1
for i in range (1,N+1):
    result *= i
    while result % 10 == 0:
        result //= 10
    result %= 100_000_000_000

result %= 10
print(result)

인터넷에 여럿 코드가 있었는데, 어째서인지 제것에서 구현할때는 잘 안되더라고요.
최대 길이 4300자를 넘어갔다고 떴던 것으로 기억합니다.

한편 알고리즘은 간단합니다.
파이썬 내장 함수 math로 구할 수 있는 것은 알고 있으나 각 product - attempt마다 10으로 나눈 나머지가 0이 되지 않을때까지 (즉, 0이 사라질때까지) while문을 구현합니다.

그리고, 자릿수가 과도하게 많아지는 것을 방지하기 위해 적절하게 큰 수로 나누어주었습니다.

마지막으로, 마지막 자리수가 필요한 경우이므로 10으로 나눈 뒤 나머지를 구해주면 끝.

profile
Complex Dynamics에서 탈출한 원숭이

0개의 댓글