만드는 중입니다

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

숫자 숏코딩

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

요약
N이 주어질 때, 숫자와 *, ^ 연산자만으로 N을 나타내는 가장 짧은 후위 표기 식을 구합니다.
난이도

보통10점 중 7점

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

문제

양의 정수 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 ^