만드는 중입니다

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

장터판 (Small)

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

요약
고정한 주사위는 값을 유지하고 빈 칸은 균등하게 굴러 각 칸이 자신을 포함한 길이 2부터 4의 같은 눈 연속 구간에 따라 점수를 받으므로 모든 결과를 열거해 평균합니다.
난이도

보통10점 중 4점

유형
완전 탐색, 확률, 시뮬레이션
정답자
아직 제출이 없습니다

문제

지리산을 오르다가 장이 선 장터를 지나게 되었다. 사람이 몰린 한쪽에서 누군가 게임을 열고 있다.

이 게임은 탁자에 놓인 NN행 MM열 격자판으로 진행한다. 격자의 칸마다 KK면체 주사위가 하나씩 놓여 있다.

주최자는 주사위 중 일부를 특정 면이 보이도록 고정하고, 나머지는 자유롭게 구르도록 둔다. 그런 다음 판을 흔들면 고정하지 않은 주사위(자유로운 주사위)가 구르다가 KK개의 면 중 하나를 보인다. 어느 면이 보일 확률은 KK개 면이 모두 같고, 주사위마다 독립이다.

판이 멈추면 칸마다 점수를 매긴다. 보는 방향은 가로, 세로, 두 대각선의 네 가지다.

  1. 그 칸을 포함해 한 방향으로 연속한 4칸이 모두 같은 면을 보이는 경우가 있으면 S4S_4점이다.
  2. 1번에 해당하지 않고, 그 칸을 포함해 한 방향으로 연속한 3칸이 모두 같은 면을 보이는 경우가 있으면 S3S_3점이다.
  3. 2번에 해당하지 않고, 그 칸을 포함해 한 방향으로 연속한 2칸이 모두 같은 면을 보이는 경우가 있으면 S2S_2점이다.

어느 항목에도 해당하지 않는 칸은 0점이다. 모든 칸의 점수를 더한 값이 그 게임의 점수다.

주사위를 고정하는 작업은 이미 끝났고 이제 판을 흔들 차례다. 판을 흔들었을 때 나오는 점수의 기댓값을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 여섯 개 NN, MM, KK, S4S_4, S3S_3, S2S_2가 공백으로 구분되어 주어진다. NN은 판의 행 수, MM은 열 수, KK는 주사위의 면 수이고, S4S_4, S3S_3, S2S_2는 위에서 설명한 점수다.

다음 NN개의 줄은 판의 맨 위 행부터 차례로 그 행에 놓인 주사위의 상태를 나타낸다. 각 줄은 공백 없이 이어진 문자 MM개로 이루어진다. 고정된 주사위는 보이는 면의 번호인 1부터 KK까지의 한 자리 숫자로, 자유로운 주사위는 물음표 ?로 적는다.

제한

  • 1≤T≤501 \le T \le 50
  • 2≤N≤82 \le N \le 8, 2≤M≤82 \le M \le 8
  • 2≤K≤92 \le K \le 9
  • 0≤S2≤S3≤S4≤1000 \le S_2 \le S_3 \le S_4 \le 100
  • 한 판에 있는 자유로운 주사위는 0개 이상 4개 이하다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 그 케이스의 점수 기댓값이다.

yy는 소수점 아래 일곱째 자리까지 적는다. 여덟째 자리 아래는 가장 가까운 값으로 반올림하고, 정확히 중간인 값은 0에서 먼 쪽으로 올린다. 예를 들어 기댓값이 정확히 38.4257812538.42578125이면 38.4257813을 출력한다. 기댓값이 정수여도 1600.0000000처럼 소수점 아래 일곱 자리를 모두 적는다.

예제2

  1. 예제 1

    입력
    2
    2 3 3 40 30 10
    121
    ??1
    4 3 4 100 30 20
    2?2
    4?1
    3?3
    1?4
    
    예상 출력
    Case #1: 53.3333333
    Case #2: 187.7734375
    
  2. 예제 2

    입력
    3
    2 2 2 50 20 5
    11
    11
    2 2 9 100 50 10
    12
    34
    2 2 3 70 40 10
    1?
    ?1
    
    예상 출력
    Case #1: 20.0000000
    Case #2: 0.0000000
    Case #3: 31.1111111