만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

팩토리얼의 합

면접 대비

시간 제한1초메모리 제한512 MB

요약
N이 주어질 때 합이 N이 되는 팩토리얼 개수의 최솟값을 구한다. 같은 값은 여러 번 써도 된다.
난이도

보통10점 중 5점

유형
동적 계획법, 수학, 그리디
정답자
아직 제출이 없습니다

문제

양의 정수 NN의 팩토리얼은 N!N!으로 적고, NN보다 작거나 같은 모든 양의 정수의 곱으로 정의한다. 예를 들어 4!=4×3×2×1=244! = 4 \times 3 \times 2 \times 1 = 24이다.

양의 정수 NN이 주어진다. N=a1!+a2!+⋯+ak!N = a_1! + a_2! + \cdots + a_k!를 만족하는 가장 작은 kk를 구하는 프로그램을 작성하라. 각 aia_i는 양의 정수이고, 같은 값이 여러 번 나와도 된다.

N=10N = 10이면 답은 3이다. 10=3!+2!+2!10 = 3! + 2! + 2!로 팩토리얼 세 개의 합으로 쓸 수 있다. N=25N = 25이면 답은 2이다. 25=4!+1!25 = 4! + 1!이다.

입력

첫째 줄에 정수 NN이 주어진다. (1≤N≤1051 \le N \le 10^5)

출력

합이 NN이 되는 팩토리얼의 최소 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    10
    
    예상 출력
    3
    
  2. 예제 2

    입력
    25
    
    예상 출력
    2