728x90
 
 
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으로 나눈 뒤 나머지를 구해주면 끝.

'코딩' 카테고리의 다른 글

[BOJ] 백준 2877 4와 7 Python  (0) 2023.10.27
[BOJ] 백준 1059 좋은 구간 Python  (0) 2023.10.27
[BOJ] 백준 28353 고양이카페 Python  (1) 2023.10.27
[BOJ] 백준 1072 게임 Python  (0) 2023.10.27
[BOJ] 백준 28294 프랙탈 Python  (0) 2023.10.27

+ Recent posts