새로운 연산자

시간 제한2초메모리 제한128 MB

요약
자릿수 합, 곱 등으로 정의된 새로운 연산자 @를 사용해 X로부터 목표값 G를 만드는 데 필요한 최소 연산 횟수를 구하는 문제입니다.
난이도

보통10점 중 7점

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

문제

양의 정수 N에 대해 다음 함수를 정의한다.

  • Sum(N)은 N의 모든 자리수를 더한 값이다.
  • Prod(N)은 N의 모든 자리수를 곱한 값이다.
  • Prod3(N)은 N의 자리수 중 가장 큰 세 개를 곱한 값이다. N이 세 자리보다 작으면 Prod3(N) = Prod(N)이다.
  • Smallest(N)은 N의 가장 작은 자리수이다.
  • First(N)은 N의 맨 앞 자리수이다.

두 값 X와 Y에 대해 연산자 @를 다음과 같이 정의한다.

X @ Y = 5 * Prod3(X) + First(X) * Sum(Y) + Smallest(Y)

다음 등식이 성립한다.

  • Sum(47) = 4 + 7 = 11
  • Prod(2322) = 2 * 3 * 2 * 2 = 24
  • Prod3(2322) = 3 * 2 * 2 = 12
  • Prod3(47) = Prod(47) = 4 * 7 = 28
  • Smallest(427) = 2
  • First(427) = 4
  • 12034 @ 217 = 5 * (4 * 3 * 2) + 1 * (2 + 1 + 7) + 1 = 131

올바른 식은 다음 규칙으로만 만들 수 있다.

  1. 입력으로 주어진 X는 올바른 식이다.
  2. A와 B가 올바른 식이면 A @ B도 올바른 식이다.
  3. 위 규칙으로 만들 수 없는 식은 올바른 식이 아니다.

X와 목표값 G가 주어질 때, 값이 G가 되는 올바른 식에 들어가는 @ 연산자의 최소 개수를 구하라. 만들 수 없다면 -1을 출력한다.

입력

첫째 줄에 X와 G가 주어진다. X는 1,000,000보다 작거나 같은 자연수이고, G는 2,000,000,000보다 작거나 같은 자연수이다.

출력

값이 G가 되는 올바른 식을 만들 수 있다면 그 식에 들어가는 @ 연산자의 최소 개수를 출력한다. 만들 수 없다면 -1을 출력한다.

예제7

  1. 예제 1

    입력
    374 659
    예상 출력
    2
    
  2. 예제 2

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

    입력
    374 465
    예상 출력
    1
    
  4. 예제 4

    입력
    374 469
    예상 출력
    2
    
  5. 예제 5

    입력
    374 1024
    예상 출력
    8
    
  6. 예제 6

    입력
    654321 12
    예상 출력
    10
    
  7. 예제 7

    입력
    654321 1234567
    예상 출력
    -1