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 |