반응형
문제
팩토리얼5란, N!의 0이 아닌 뒤 5자리를 말한다.
N이 주어졌을 때, 팩토리얼5를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N이 주어진다. N은 1,000,000보다 작거나 같다. 또, 9보다 크거나 같다.
출력
첫째 줄에 N의 팩토리얼5를 계산한다.
예제 입력 120
|
예제 출력 117664
|
예제 입력 218
|
예제 출력 205728
|
풀이
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:])
반응형
'알고리즘 연습 > 수학, 정수론, 기하' 카테고리의 다른 글
[🥈2 / 백준 1850 / 파이썬] 최대공약수 (0) | 2022.01.16 |
---|---|
[🥉3 / 백준 2965 / 파이썬] 캥거루 세마리 (0) | 2022.01.11 |
[🥉3 / 백준 2903 / 파이썬] 중앙 이동 알고리즘 (0) | 2022.01.05 |
[🥉3 / 백준 5063 / 파이썬] TGN (0) | 2021.12.16 |
[🥉3 / 백준 2501 / 파이썬] 약수 구하기 (0) | 2021.12.13 |