만드는 중입니다

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

자릿수 곱하기

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

요약
B진법과 목표 N이 주어질 때, B진법 자릿수들의 곱이 N이 되는 가장 작은 양의 정수를 찾거나 존재하지 않음을 판별한다.
난이도

어려움10점 중 8점

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

문제

양의 정수의 각 자리 숫자를 모두 곱하면 음이 아닌 정수가 나온다. 10진법에서 이 규칙은 함수 ff를 정의한다. 예를 들어 f(38)=3×8=24f(38) = 3 \times 8 = 24이다.

같은 규칙을 다른 진법에도 적용할 수 있다. 80을 3진법으로 쓰면 2222이므로 f3(80)=2×2×2×2=16f_3(80) = 2 \times 2 \times 2 \times 2 = 16이다.

이제 반대 방향의 문제를 푼다. 진법 BB와 목표값 NN이 주어질 때, fB(X)=Nf_B(X) = N을 만족하는 가장 작은 양의 정수 XX를 구하라. 여기서 fB(X)f_B(X)는 XX를 BB진법으로 썼을 때 각 자리 숫자의 곱이다.

입력

첫째 줄에 두 정수 BB와 NN이 공백으로 구분되어 주어진다. (2<B≤100002 < B \le 10000, 0<N<2630 < N < 2^{63})

출력

fB(X)=Nf_B(X) = N을 만족하는 가장 작은 양의 정수 XX를 10진법으로 출력한다. 그런 XX가 없으면 impossible을 출력한다. XX가 존재하는 입력에서는 항상 X<263X < 2^{63}이다.

예제4

  1. 예제 1

    입력
    10 24
    
    예상 출력
    38
    
  2. 예제 2

    입력
    10 11
    
    예상 출력
    impossible
    
  3. 예제 3

    입력
    9 216
    
    예상 출력
    546
    
  4. 예제 4

    입력
    10000 5810859769934419200
    
    예상 출력
    5989840988999909996