진법 알아내기

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

요약
덧셈과 곱셈, 숫자로 이루어진 식이 주어질 때 양변이 같은 값이 되는 모든 진법 B를 구한다.
난이도

보통10점 중 7점

유형
수학, 완전 탐색, 구현, 정수론
정답자
아직 제출이 없습니다

문제

66과 99를 곱하면 얼마일까? 정답은 4242이다. 5454라고 생각했다면 잠시 쉬었다가 다시 풀어 보길 권한다. 4242는 1313진법으로 계산한 결과이기 때문이다.

22 이상의 정수 BB에 대하여, BB진법의 각 자리 숫자는 00 이상 B−1B-1 이하의 정수이다. BB진법 수를 읽을 때는 가장 오른쪽 자리에 11을, 오른쪽에서 두 번째 자리에 BB를, 세 번째 자리에 B2B^2을 곱하는 식으로 왼쪽으로 갈수록 BB의 거듭제곱을 곱해 모두 더한다.

어떤 등식은 사용한 진법에 따라 참이 되기도 하고 거짓이 되기도 한다. 예를 들어 2+2=42+2=4는 B≥5B \ge 5일 때 항상 참이다. 44진법에서는 숫자 44를 쓸 수 없으므로 B≥5B \ge 5이어야 한다. 반면 2+2=52+2=5처럼 어떤 진법을 써도 참이 될 수 없는 등식도 있다.

등식이 주어졌을 때, 어떤 진법에서 그 등식이 참이 되는지 구하는 프로그램을 작성하시오.

입력

입력의 각 줄은 하나의 테스트 케이스이며 EXPR=EXPR 형태이다. EXPR는 길이가 1717을 넘지 않는 수식이다.

모든 수식은 항상 올바르며 +, *, 그리고 숫자 0부터 9까지로만 이루어져 있다. 수식이 +로 시작하는 경우는 없고, 수 앞에 불필요한 00이 붙는 경우도 없다.

입력의 마지막 줄에는 = 한 글자만 주어진다.

출력

각 테스트 케이스마다 주어진 등식을 참으로 만드는 진법을 출력한다.

등식을 참으로 만드는 진법이 무한히 많은 경우에는 B+를 출력한다. 이때 BB는 등식을 참으로 만드는 가장 작은 진법이다.

진법이 유한개인 경우에는 그 진법들을 오름차순으로 공백으로 구분하여 출력한다.

어떤 진법에서도 등식이 참이 되지 않으면 *를 출력한다.

예제4

  1. 예제 1

    입력
    6*9=42
    10000+3*5*334=3*5000+10+0
    2+2=3
    2+2=4
    0*0=0
    =
    
    예상 출력
    13
    6 10
    *
    5+
    2+
    
  2. 예제 2

    입력
    6*9=42
    =
    
    예상 출력
    13
    
  3. 예제 3

    입력
    2+2=4
    =
    
    예상 출력
    5+
    
  4. 예제 4

    입력
    0*0=0
    =
    
    예상 출력
    2+