Countdown

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

요약
여섯 개의 숫자를 사칙연산으로 조합해 중간값이 항상 양의 정수가 되도록 하면서 목표값에 가장 가까운 값을 구합니다.
난이도

보통10점 중 6점

유형
완전 탐색, 재귀, 조합론
정답자
아직 제출이 없습니다

문제

TV 프로그램 Countdown에는 여섯 개의 서로 다른 수를 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)으로 조합하여 어떤 수를 만드는 라운드가 있다. 기본 규칙은 다음과 같다.

  • 참가자는 잘 섞인 24개의 타일 중 여섯 개를 고른다. 타일은 두 그룹으로 나뉜다: "큰 수" 네 개(25,50,75,10025, 50, 75, 100)와, 나머지인 "작은 수"로 11부터 1010까지 각각 두 개씩이다. 따라서 타일의 값은 {1,2,3,4,5,6,7,8,9,10,25,50,75,100}\{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100\}에서 온다.
  • 참가자는 선택에 큰 수를 몇 개 포함할지 정하며, 하나도 포함하지 않을 수도 있다.
  • 그런 다음 참가자는 30초 안에, 고른 여섯 개의 수를 덧셈, 뺄셈, 곱셈, 나눗셈으로 조합하여 목표에 최대한 가까운 수를 만든다.
  • 모든 수를 반드시 사용할 필요는 없다.
  • 어떤 수는 등장하는 횟수만큼 사용할 수 있다.
  • 분수는 허용되지 않으며, 계산의 모든 단계에서 양의 정수만 나타날 수 있다.

여섯 개의 수와 목표 TT가 주어질 때, TT에 얼마나 가까이 갈 수 있는지 구하여라.

입력

첫째 줄에 케이스의 수 CC (1≤C≤501 \le C \le 50)가 주어진다. 이어지는 CC개의 각 줄에는 집합 {1,2,3,4,5,6,7,8,9,10,25,50,75,100}\{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 50, 75, 100\}에 속하는 여섯 개의 자연수와, 목표를 나타내는 자연수 TT (1≤T≤9991 \le T \le 999)가 주어진다.

출력

각 케이스에 대해, 규칙에 따라 여섯 개의 수로부터 얻을 수 있는 모든 값 vv에 대한 ∣v−T∣|v - T|의 최솟값을 한 줄에 하나의 정수로 출력한다. 고른 각 수 자체도 얻을 수 있는 값이므로 이 값은 항상 정의되며, 목표를 정확히 만들 수 있을 때 정확히 00이 된다.

예제2

  1. 예제 1

    입력
    3
    1 75 100 5 3 25 25
    100 100 100 100 100 75 345
    1 3 1 10 100 75 345
    
    예상 출력
    0
    4
    0
    
  2. 예제 2

    입력
    2
    75 50 2 3 8 7 812
    75 50 2 3 8 7 813
    
    예상 출력
    0
    0