식의 값

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

요약
시작값 a에서 연산 x#y = (x의 자릿수 합)*(y의 최대 자릿수) + (y의 최소 자릿수)만 사용해 K를 만드는 최소 연산 횟수를 구하고, 불가능하면 NEVAR를 출력한다.
난이도

보통10점 중 7점

유형
BFS, 수학, 구현, 그리디
정답자
아직 제출이 없습니다

문제

연산 #\# 는 임의의 두 양의 정수에 대해 다음과 같이 정의된다.

두 양의 정수 xx, yy 에 대해 (x#y)=(x의 각 자리 숫자의 합)×(y의 가장 큰 자리 숫자)+(y의 가장 작은 자리 숫자)(x \# y) = (x \text{의 각 자리 숫자의 합}) \times (y \text{의 가장 큰 자리 숫자}) + (y \text{의 가장 작은 자리 숫자})

예를 들어 (9#30)=9×3+0=27(9 \# 30) = 9 \times 3 + 0 = 27 이지만, (30#9)=3×9+9=36(30 \# 9) = 3 \times 9 + 9 = 36 이다.

이 문제에서 말하는 식은 다음 중 하나이다.

  • 하나의 변수 a (그 값은 양의 정수), 또는
  • (식 # 식) 꼴로 쓸 수 있는 것.

예를 들어 다음은 모두 이 문제에서 말하는 식이다.

  • a
  • (a#a)
  • ((a#a)#a)
  • (a#((a#a)#((a#a)#a)))

식의 값은 변수 a 의 값과 위 연산 #\# 로 정해진다. 변수 a 하나로만 이루어진 식의 값은 aa 이고, (식1 # 식2) 의 값은 두 부분식의 값에 연산 #\# 를 적용한 결과이다.

주어진 aa 의 값에 대해, 값이 KK (KK 는 양의 정수) 가 되는 식을 만드는 데 필요한 연산 #\# 의 최소 개수를 구하여라.

입력

양의 정수 두 개가 주어진다. 정수 변수 aa 의 값 (1≤a≤9999999991 \le a \le 999999999) 과 식의 목표 값 KK (1≤K≤9999999991 \le K \le 999999999) 이다.

출력

필요한 연산 #\# 의 최소 개수를 출력한다. 주어진 aa 의 값으로는 어떤 식의 값도 KK 가 될 수 없다면, 대신 NEVAR 를 출력한다.

예제2

  1. 예제 1

    입력
    718 81
    
    예상 출력
    3
    
  2. 예제 2

    입력
    999 333
    
    예상 출력
    NEVAR