창문 깨기 (Small)

M명의 작업자가 창문 K개를 무작위로 보강하고 N명의 악당이 돌을 하나씩 무작위로 던질 때 창문 하나 이상이 깨질 확률을 구합니다.

보통7확률조합론동적 계획법아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

방 하나가 창문 KK개로 둘러싸여 있다. 창문은 돌을 맞으면 깨진다. 이 가운데 HH개는 미리 강화되어 있어서 첫 번째 돌은 견디고 두 번째 돌에 깨지고, 나머지 KHK - H개는 강화되어 있지 않아 첫 번째 돌에 깨진다.

모임 전에 방의 주인은 일꾼 MM명을 불러 창문을 더 강화한다. 일꾼은 각자 창문 하나를 골라 한 번 강화하고, 강화를 한 번 받은 창문은 돌을 하나 더 견딘다. 일꾼이 어느 창문을 고르는지는 다른 일꾼의 선택과 무관하며, 창문 KK개 가운데 하나를 같은 확률로 고른다.

강화가 끝나면 악당 NN명이 방에 모여 각자 창문 하나를 골라 돌을 하나씩 던진다. 악당이 어느 창문을 고르는지도 다른 악당의 선택과 무관하며, 창문 KK개 가운데 하나를 같은 확률로 고른다. 이미 깨진 창문에 던진 돌은 창문을 그대로 통과한다.

돌을 다 던진 뒤에 깨진 창문이 하나 이상일 확률을 구하시오.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어지는 TT개의 줄에 테스트 케이스가 하나씩, 정수 네 개로 주어진다.

K N M H

제한

  • 1T1001 \le T \le 100
  • 1K201 \le K \le 20
  • 1N301 \le N \le 30
  • 1M301 \le M \le 30
  • 0HK0 \le H \le K

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 창문이 하나 이상 깨질 확률을 소수점 아래 여덟 자리까지 반올림한 값이다. 소수점 아래는 항상 정확히 여덟 자리로 적으며, 값이 0이거나 1일 때도 0.00000000, 1.00000000처럼 적는다.

힌트

예제의 세 케이스는 모두 창문이 세 개인 방이다.

K=3K = 3, N=1N = 1, M=1M = 1, H=0H = 0인 첫 번째 케이스에서는 일꾼이 강화한 창문에 악당이 돌을 던졌을 때만 창문이 버틴다. 그래서 깨질 확률은 2/32/3이다.

K=3K = 3, N=2N = 2, M=1M = 1, H=0H = 0인 두 번째 케이스에서는 어떤 창문이 강화되어 첫 번째 돌을 버티더라도 두 번째 돌까지 버티는 창문은 없다. 확률은 11이다.

K=3K = 3, N=1N = 1, M=2M = 2, H=2H = 2인 세 번째 케이스에서는 미리 강화된 창문 두 개가 돌 하나에 깨질 일은 없다. 남은 창문 하나가 두 일꾼 모두에게 선택받지 못한 채 돌을 맞으면 깨지므로 확률은 2/3×2/3×1/3=4/272/3 \times 2/3 \times 1/3 = 4/27이다.