아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

1에서 시작하는 변환

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

요약
1에서 시작해 첫 자리나 끝 자리에 1을 더하면 비용 1, 2에서 9를 곱하면 비용 2가 들 때, 주어진 각 수에 도달하는 최소 비용을 구하고 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
백트래킹, BFS, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

뉴메리아 왕국은 자국 수(數)의 품질에 큰 자부심을 가지고 있어서, 수를 한 번 바꿀 때마다 주민에게 세금을 걷습니다. 그럼에도 뉴메리아 주민들은 수를 변환하는 것을 무척 좋아합니다.

일원회(Units) 라는 친구들은 가장 값싼 변환만을 사용합니다. 수는 맨 앞자리에 00 이 없는 십진법으로 적으며, 오직 맨 앞자리(가장 큰 자리)나 맨 뒷자리(가장 작은 자리) 숫자만 바꿀 수 있습니다.

  • 맨 앞자리 또는 맨 뒷자리 숫자 dd 에 11 을 더해, 그 자리를 d+1d+1 의 십진 표기로 바꿉니다. 비용은 금화 11 개입니다. (d=9d=9 이면 d+1=10d+1=10 이므로 숫자 "9"가 두 자리 "10"으로 바뀌어 수의 길이가 늘어납니다.)
  • 맨 앞자리 또는 맨 뒷자리 숫자 dd 에 22 부터 99 까지의 숫자 kk 를 곱해, 그 자리를 d×kd \times k 의 십진 표기로 바꿉니다. 비용은 금화 22 개입니다. (d×k≥10d \times k \ge 10 이면 그 자리는 두 자리 숫자로 바뀝니다.)

일원회는 항상 수 11 에서 변환을 시작합니다.

예를 들어 20212021 은 다음 순서로 11 에서 얻을 수 있으며, 금화 1414 개가 듭니다.

  1. 11 에 11 을 더해 22 를 얻습니다.
  2. 22 에 55 를 곱해 1010 을 얻습니다.
  3. 맨 앞자리에 11 을 더해 2020 을 얻습니다.
  4. 맨 앞자리에 55 를 곱해 100100 을 얻습니다.
  5. 맨 앞자리에 22 를 곱해 200200 을 얻습니다.
  6. 맨 뒷자리에 11 을 더해 201201 을 얻습니다.
  7. 맨 뒷자리에 55 를 곱해 205205 를 얻습니다.
  8. 맨 뒷자리에 44 를 곱해 20202020 을 얻습니다.
  9. 맨 뒷자리에 11 을 더해 20212021 을 얻습니다.

아래 그림에서 화살표 위의 수는 그 단계의 비용이고, 아래의 식은 적용한 연산입니다.

1⟹11+12⟹22×510⟹11+120⟹22×5100⟹21×2200⟹10+1201⟹21×5205⟹25×42020⟹10+120211 \underset{1 +1}{\overset{1}{\Longrightarrow}} 2 \underset{2 \times 5}{\overset{2}{\Longrightarrow}} 10 \underset{1 +1}{\overset{1}{\Longrightarrow}} 20 \underset{2 \times 5}{\overset{2}{\Longrightarrow}} 100 \underset{1 \times 2}{\overset{2}{\Longrightarrow}} 200 \underset{0 +1}{\overset{1}{\Longrightarrow}} 201 \underset{1 \times 5}{\overset{2}{\Longrightarrow}} 205 \underset{5 \times 4}{\overset{2}{\Longrightarrow}} 2020 \underset{0+1}{\overset{1}{\Longrightarrow}} 2021

하지만 20212021 은 더 싸게, 금화 99 개만으로도 얻을 수 있습니다.

1⟹21×99⟹29×545⟹24×5205⟹25×42020⟹10+120211 \underset{1 \times 9}{\overset{2}{\Longrightarrow}} 9 \underset{9 \times 5}{\overset{2}{\Longrightarrow}} 45 \underset{4 \times 5}{\overset{2}{\Longrightarrow}} 205 \underset{5 \times 4}{\overset{2}{\Longrightarrow}} 2020 \underset{0+1}{\overset{1}{\Longrightarrow}} 2021

일원회가 주어진 MM 개의 수를 이 변환들로 얻을 수 있도록 도와주세요.

각 수 AiA_i 에 대해, 일원회가 11 에서 AiA_i 를 얻는 데 드는 최소 비용을 구하세요. 어떤 변환 순서로도 얻을 수 없는 수라면 그 답은 −1-1 입니다.

입력

첫 번째 줄에 정수 MM — 수의 개수가 주어집니다. 이어지는 MM 개의 줄에는 각각 하나의 자연수 AiA_i (1≤i≤M1 \le i \le M) 가 주어집니다.

출력

MM 개의 줄을 출력합니다. ii 번째 줄에는 11 에서 AiA_i 를 얻는 단위 변환의 최소 비용을 출력합니다. 어떤 수에 대해 그러한 변환이 존재하지 않으면 그 줄에 −1-1 을 출력합니다.

제한

  • 1≤M≤501 \le M \le 50
  • 1≤Ai≤10191 \le A_i \le 10^{19}

예제3

  1. 예제 1

    입력
    3
    1000
    5555
    2021
    
    예상 출력
    8
    10
    9
    
  2. 예제 2

    입력
    1
    1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    9
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    예상 출력
    0
    1
    2
    2
    2
    2
    2
    2
    2