숫자 숏코딩

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

요약
주어진 양의 정수 N을 0부터 9까지의 숫자와 곱셈, 거듭제곱만으로 이루어진 가장 짧은 후위 표기식으로 표현한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 수학, 정수론, 완전 탐색
정답자
아직 제출이 없습니다

문제

양의 정수 NN이 주어진다. 0부터 9까지의 숫자와 곱하기 *, 거듭제곱 ^의 연산기호를 이용하여 NN을 표현하는 가장 짧은 길이의 식을 구하시오.

식은 후위 표기법으로 나타내고, 각 수 또는 연산기호는 공백으로 구분한다. 단, 공백은 식의 길이에 포함하지 않는다.

입력

양의 정수 NN이 주어진다. (1≤N≤108)(1 \leq N \leq 10^8)

출력

NN을 표현하는 가장 짧은 길이의 식을 후위 표기법으로 출력한다. 만약 가능한 식이 여러 개 있을 경우 그중 아무거나 하나를 출력한다.

힌트

후위 표기법은 연산자를 연산 대상의 뒤에 쓰는 연산 표기법이다. 수식의 앞에서부터 수는 스택에 저장하고, 연산자는 스택에서 두 수를 꺼내 연산하여 스택에 넣는다.

예를 들어, 후위 표기식 3 2 3 * ^는 다음과 같이 729729로 계산된다.

  1. 33, 22, 33이 차례로 스택에 들어간다.
  2. 스택에서 22, 33을 꺼내 곱한 값 2×3=62\times 3 = 6을 스택에 넣는다.
  3. 스택에서 33, 66을 꺼내 거듭제곱한 값 36=7293^6=729를 스택에 넣는다.

예제2

  1. 예제 1

    입력
    1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    10000
    
    예상 출력
    10 4 ^