반응형
    
    
    
  
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를 계산한다.
| 예제 입력 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 |