만드는 중입니다

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

지워진 계산식 복원 (Large)

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

요약
?를 숫자로 채워 덧셈식이나 뺄셈식을 성립시키고 전체 문자열이 사전 순으로 가장 작게 복원합니다.
난이도

보통10점 중 7점

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

문제

한 출판사가 초등학생용 계산 연습 문제집을 만들었다. 경쟁 출판사가 인쇄 직전에 원고를 몰래 고쳐서 식에 적힌 숫자 일부를 지워 버렸다. 지워진 자리를 다시 채워 넣어야 한다.

식은 다음 규칙을 따른다.

  • 식은 숫자 연산자 숫자 = 숫자 형태다.
  • 연산자는 덧셈 + 또는 뺄셈 -이다.
  • 모든 수는 음이 아닌 정수다. 두 자리 이상인 수의 첫 자리는 0이 아니고, 0은 한 자리 0으로 적는다.
  • 지워진 자리는 각각 ? 한 글자로 표시한다.
  • ?를 숫자로 바꾸어도 각 수의 자릿수는 변하지 않는다.
  • 숫자와 연산자 사이, 숫자와 = 사이에는 공백 문자가 하나씩 있고, 식의 앞과 뒤에는 공백이 없다.
  • 지워지기 전의 식은 올바른 식이었으므로, 규칙을 모두 만족하는 복원 방법이 적어도 하나 있다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어지는 TT개의 줄에 각 테스트 케이스의 식이 한 줄에 하나씩 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤1 \le 식의 길이 ≤250\le 250

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 케이스 번호이고, y는 복원한 식이다.

복원 방법이 여러 가지면 식 전체를 문자열로 보고 사전순으로 가장 작은 것을 출력한다. 예를 들어 ? + ? = 2는 0 + 2 = 2, 1 + 1 = 2, 2 + 0 = 2로 복원할 수 있고, 이 중 사전순으로 가장 작은 0 + 2 = 2를 출력한다.

예제3

  1. 예제 1

    입력
    3
    1?3 + 24? = 424
    3 + ? = 9
    1? - ? = 3
    
    예상 출력
    Case #1: 183 + 241 = 424
    Case #2: 3 + 6 = 9
    Case #3: 10 - 7 = 3
    
  2. 예제 2

    입력
    4
    ? + 0 = 0
    ?0 + ?0 = 100
    ?? + ?? = 100
    ?? - ?? = 0
    
    예상 출력
    Case #1: 0 + 0 = 0
    Case #2: 10 + 90 = 100
    Case #3: 10 + 90 = 100
    Case #4: 10 - 10 = 0
    
  3. 예제 3

    입력
    4
    9? + ? = 100
    ?? - ? = ?
    100? + ??? = 1???
    ?9 - 9? = ?
    
    예상 출력
    Case #1: 91 + 9 = 100
    Case #2: 10 - 1 = 9
    Case #3: 1000 + 100 = 1100
    Case #4: 99 - 90 = 9