덮어쓰기 게임
시간 제한8초메모리 제한512 MB
좌상단 prefix 직사각형을 무작위로 덧칠해 목표 배치와 처음 일치할 때까지 칠한 칸 수의 기댓값을 기약분수로 구합니다.
문제
행 열로 칸이 놓인 직사각형 판이 있다. 행에는 위에서 아래로 번부터 번까지, 열에는 왼쪽에서 오른쪽으로 번부터 번까지 번호를 붙인다. 행 열의 칸을 로 쓴다. 각 칸은 검은색이거나 흰색이다.
다음 연산으로 판을 칠한다.
- 칸 와 색 를 균등한 확률로 무작위로 고른다. 여기서 , 이고 는 검은색 또는 흰색이다. 가지 조합의 확률이 모두 같고, 각 연산은 앞선 연산과 독립이다.
- 이고 인 모든 칸 를 색 로 칠한다.
연산 한 번은 칸 개를 칠한다. 연산으로 색이 실제로 바뀌지 않은 칸도 칠한 칸으로 센다.
예를 들어 판에서 칸 과 검은색을 골랐다고 하자. 이 연산은 , , , , , 여섯 칸을 검은색으로 칠하므로, 이미 검은색이던 칸까지 세어 칸을 칠한다.
판이 목표 색칠과 같아질 때까지 연산을 반복하고, 처음으로 같아지는 순간에 멈춘다. 처음 색칠과 목표 색칠이 주어질 때, 멈출 때까지 칠한 칸 수 총합의 기댓값을 구하라.
입력
입력은 여러 개의 데이터 집합으로 이루어지고, 데이터 집합은 최대 개이다.
각 데이터 집합의 첫 줄에는 판의 행 수와 열 수인 정수 와 가 주어진다 (). 이어서 처음 색칠이 주어지고, 그 뒤에 목표 색칠이 주어진다. 색칠 하나는 개의 문자로 된 개의 줄로 주어지며, B는 검은 칸, W는 흰 칸을 뜻한다. 두 색칠 사이에 빈 줄이 하나 있고, 각 데이터 집합 뒤에도 빈 줄이 하나 있다.
입력의 끝은 두 개가 적힌 줄이다. 이 줄은 데이터 집합으로 처리하지 않는다.
출력
각 데이터 집합마다 칠한 칸 수 총합의 기댓값을 기약분수 꼴로 한 줄에 출력한다. 분자, 빗금, 분모를 차례로 쓰며 이고 이어야 한다. 분모가 이어도 함께 쓴다. 기댓값이 이면 120/1로 출력한다. 처음 색칠이 목표 색칠과 이미 같으면 연산을 하지 않으므로 답은 0/1이다.
기댓값은 항상 유한한 유리수이다.