알고리즘 연습/수학, 정수론, 기하

[🥈2 / 백준 1564 / 파이썬] 팩토리얼5

김세진 2022. 1. 7. 18:19
반응형

 

 

1564번: 팩토리얼5

첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.

www.acmicpc.net

 

문제

팩토리얼5란, N!의 0이 아닌 뒤 5자리를 말한다.

N이 주어졌을 때, 팩토리얼5를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.

출력

첫째 줄에 N의 팩토리얼5를 계산한다.

 

예제 입력 1

20

예제 출력 1

17664

예제 입력 2

18

예제 출력 2

05728

 

풀이

 

N의 최대 입력이 1,000,000으로, 이를 모두 계산한 뒤 조건대로 실행하기엔 수가 지나치게 커진다.

따라서 N이 일정 이상 커지면 그 위는 자르고 밑의 수만 사용한다.

 

만약 팩토리얼 계산 중 수의 맨 뒤에 0이 붙는다면 0을 제거한다.

예제 2와 같이 맨 앞에 0이 올 수 있음에 유의한다.

 

n = int(input())
f = 1
for i in range(2,n+1):
    f*=i
    while True:
        if str(f)[-1] == "0":
            f //= 10
        else:
            break
    f%=100000000000000000
print(str(f)[-5:])
반응형