만드는 중입니다

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

Kakezan

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

요약
음이 아닌 정수가 주어질 때, 십진수 표기를 임의의 위치에서 잘라 두 부분의 곱 중 최댓값으로 바꾸는 과정을 한 자리 수가 될 때까지 반복하고 걸린 횟수를 구하며, 영원히 끝나지 않으면 -1을 출력한다.
난이도

보통10점 중 7점

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

문제

타로는 곱셈을 막 배운 초등학생이다. 어쩐지 곱셈이 마음에 들어서, 숫자를 보면 곱셈을 하고 싶어진다. 그런 그가 요즘 즐겨 하는 작업은 0 이상의 정수에 다음과 같은 처리를 반복해서 적용하는 것이다.

  • 1단계. 어떤 0 이상의 정수 nn이 10진수로 한 자리라면 처리를 끝낸다. 그렇지 않으면 2단계로 간다.
  • 2단계. 10 이상의 정수 nn을 10진수로 나타냈을 때 어느 자리 사이든 잘라 두 수로 나눌 수 있다(예: 2012→20,122012 \to 20, 12). 가능한 모든 자르는 방법에 대해 얻은 두 수를 곱해 가장 큰 값을 다음 nn으로 삼고 1단계로 돌아간다. 자세한 내용은 아래 "2단계에 대한 보충"을 참고한다.

타로는 이 처리를 마음에 들어 하지만, 큰 수에서는 2단계를 몇 번 반복해야 하는지 예상할 수 없고 어쩌면 무한히 반복해야 할지도 모른다고 생각한다. 그래서 타로의 형인 대학생인 당신에게 0 이상의 정수 nn에 대해 이 2단계를 몇 번 해야 하는지 물어보았다.

당신이 할 일은 QQ개의 0 이상의 정수 N1..NQ가 주어질 때, 각 정수에서 처리가 끝날 때까지 2단계가 몇 번 수행되는지 구하는 것이다. 만약 무한히 반복해야 한다면 -1을 출력한다.

자른 결과의 맨 앞에 0이 붙는 경우도 고려해야 한다. 예를 들어 n=1024n=1024일 때, 1∗0241*024, 10∗2410*24, 102∗4102*4를 각각 계산하면 24, 240, 408이 되므로 408이 선택되고, 이것이 다음 nn이 된다.

입력

Q
N1
N2
...
NQ
  • Q는 주어지는 0 이상의 정수의 개수를 나타낸다.
  • Ni는 타로가 궁금해하는 0 이상의 정수로, i번째 수를 나타낸다.

출력

Q개의 정수를 줄바꿈으로 구분해 출력한다.

R1
R2
..
RQ
  • Ri는 Ni에 대해 처리가 끝날 때까지 2단계를 실행하는 횟수를 나타낸다.
  • Ni에 대해 2단계를 무한히 실행해야 한다면 Ri는 -1이 된다.

제한

  • 1≤Q≤100
  • 0≤Ni≤106

예제2

  1. 예제 1

    입력
    3
    9
    99
    123
    
    예상 출력
    0
    2
    3
    
  2. 예제 2

    입력
    2
    999999
    1000000
    
    예상 출력
    12 
    1