도전 24

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

요약
서로 다른 양의 정수 네 개로 각 수를 한 번씩만 사용해 사칙연산(나눗셈은 나누어떨어질 때만)으로 만들 수 있는 모든 값을 구한 뒤, 연속된 정수가 가장 길게 이어지는 구간을 찾고 같은 길이면 시작값이 큰 쪽을 출력한다.
난이도

보통10점 중 6점

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

문제

도전 24는 초등학생들이 즐겨 하는 계산 게임이다. 게임을 시작할 때 각 참가자는 양의 정수 i1i_1, i2i_2, i3i_3, i4i_4가 하나씩 적힌 카드 4장을 받는다. 사칙연산(+, -, *, /)을 이용해 네 수를 적절히 조합하여 가장 먼저 24를 만드는 사람이 이긴다. 이때 네 수는 각각 정확히 한 번씩 사용해야 하고, 나눗셈은 나누어떨어질 때만 쓸 수 있다(6/2는 되지만 6/4는 안 된다). 예를 들어 7, 2, 5, 1을 받았다면 (7-2)*5-1이나 (7+1)*(5-2)처럼 24를 만들 수 있다.

이제 규칙은 비슷하지만 목표가 조금 다른 게임을 생각하자. 수 4개가 주어지면, 그 네 수로 만들 수 있는 값을 모두 구한다. 그런 다음, 만들 수 있는 값들 중에서 연속한 정수로 이루어진 가장 긴 구간을 찾는다. 예를 들어 7, 2, 5, 1인 경우 -18부터 26까지가 가장 긴 구간이다.

+와 -로 어떤 수를 음수로 바꿀 수는 없다. 즉, 모든 연산자는 이항 연산자로만 사용한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 네 개의 수로 주어진다. 네 수는 모두 양의 정수이고, 100을 넘지 않으며, 서로 다르다. 입력의 끝은 네 개의 0(0 0 0 0)으로 이루어진 줄로 표시된다.

출력

각 테스트 케이스마다 케이스 번호와 함께 가장 긴 구간을 출력한다. 출력 형식은 Case k: a to b이며, kk는 1부터 시작하는 케이스 번호, aa와 bb는 각각 연속한 정수로 이루어진 가장 긴 구간의 시작 값과 끝 값이다. 가장 긴 연속 구간이 여러 개라면, 시작 값이 가장 큰 것을 출력한다.

예제2

  1. 예제 1

    입력
    7 2 5 1
    8 15 38 3
    0 0 0 0
    
    예상 출력
    Case 1: -18 to 26
    Case 2: 150 to 153
    
  2. 예제 2

    입력
    1 2 3 4
    0 0 0 0
    
    예상 출력
    Case 1: -23 to 28