조작된 룰렛

조작된 룰렛에서 최소 베팅 번호가 당첨될 때 예산 안에서 정수 베팅을 배치해 기대 수익을 최대화합니다.

보통6확률수학그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

룰렛은 0부터 36까지의 번호 가운데 하나 이상에 참가자가 돈을 거는 카지노 게임이다. 판이 한쪽으로 돌고 구슬은 반대쪽으로 돌다가, 구슬은 결국 0부터 36 사이의 한 번호에 떨어진다. 00 칸이 있는 룰렛도 있지만 이 룰렛에는 없다. 구슬이 떨어진 번호에 돈을 건 참가자는 건 돈의 36배를 받는다. 그 판돈의 순이익은 건 돈의 35배다. 다른 번호에 건 돈은 모두 잃는다.

당신은 밤새 돈을 잃었다. 게임을 더 지켜보다가 카지노에 유리한 규칙성을 찾아냈다. 구슬은 언제나 걸린 돈의 합이 가장 작은 번호에 떨어진다. 합이 가장 작은 번호가 여럿이면 그중 하나에 균등한 확률로 떨어진다.

당신은 다른 참가자가 모두 돈을 건 뒤에 자신의 돈을 건다. 남은 예산은 BB이고 건 돈의 합은 BB를 넘을 수 없다. 서로 다른 번호 0개 이상에 걸 수 있고, 각 번호에 거는 금액은 양의 정수라면 무엇이든 되며 번호마다 달라도 된다. 최적으로 걸었을 때 순이익의 기댓값을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어지고, 각 테스트 케이스는 두 줄이다. 첫 줄에는 남은 예산 BB와 다른 참가자가 돈을 건 번호의 개수 NN이 공백을 사이에 두고 주어진다. 둘째 줄에는 그 서로 다른 NN개 번호에 걸린 돈의 합 X1,X2,,XNX_1, X_2, \dots, X_N이 공백을 사이에 두고 주어진다.

제한

  • 1T1001 \le T \le 100
  • 1N371 \le N \le 37
  • 1B,Xi10001 \le B, X_i \le 1000

출력

각 테스트 케이스마다 한 줄에 "Case #x: "를 출력한 다음, 최적으로 걸었을 때 순이익의 기댓값을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호다. 기댓값은 소수점 아래 여섯째 자리까지 반올림해서 쓰고, 값이 정수라도 0으로 채워 소수점 아래를 항상 여섯 자리로 출력한다.

힌트

첫 번째 예제 입력의 두 번째 테스트 케이스에서는 아무도 걸지 않은 34개 번호에 1씩 걸면 된다. 비용은 34이고 어느 번호가 나와도 36을 받으므로 순이익은 3634=236 - 34 = 2다.

세 번째 테스트 케이스에서는 아무도 걸지 않은 33개 번호에 1씩 건다. 걸린 돈의 합이 1인 번호는 모두 35개이고 그중 33개가 당신이 건 번호이므로, 3335\frac{33}{35}의 확률로 36을 받는다. 순이익의 기댓값은 3335×3633=3335\frac{33}{35} \times 36 - 33 = \frac{33}{35}이고, 소수점 아래 여섯째 자리까지 반올림하면 0.942857이다.