여행을 끝내고 돌아갈 날이 되었다. 아쉬운 것이야 많지만 그중 가장 아쉬운 점은 내가 2만 피트 상공을 날아가는 동안 윔블던 테니스 경기가 끝나 버린다는 것이다.
어, 잠깐. 잘못 생각했다. 경기가 시작하는 시각이야 낮이지만 테니스는 얼마든지 길어질 수 있는 종목이다. 저녁까지 경기가 이어진다면 아마 볼 수 있을 텐데. 경기는 언제쯤 끝날까?
나는 선수마다 그 선수가 서브권을 가졌을 때 이길 확률을 모두 알고 있다. 그런데 경기는 여러 세트로, 세트는 다시 여러 게임으로 나뉘고 누가 서브를 하느냐에 따라 승률이 달라져서 경기가 얼마나 길어질지는 나 혼자 예측할 수가 없다.
대회 규칙은 간단하다.
예를 들어 A와 B의 경기에서 A가 첫 서브를 했고 어느 세트가 6-1로 끝났다고 하자. 그 세트의 마지막 게임은 A가 서브했으므로 다음 세트의 첫 서브는 B가 한다. 세트를 누가 이겼는지는 상관이 없다. 즉 직전 세트의 마지막 게임에서 서브한 선수의 상대가 다음 세트의 첫 게임을 서브한다.
내가 아는 정보는 두 선수가 만났을 때 서브권을 가진 선수가 이길 확률뿐이다. 이 정보만으로 두 선수의 경기가 끝날 때까지 걸리는 시간의 기댓값을 구하는 프로그램을 작성하시오.
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 두 줄이다. 첫 줄에는 그 경기의 첫 서브를 하는 선수의 성과 이름이 공백으로 구분되어 주어지고, 이어서 그 선수가 자신이 서브하는 게임에서 이길 확률이 백분율 정수로 주어진다. 둘째 줄에는 상대 선수의 성과 이름, 그리고 그 선수가 자신이 서브하는 게임에서 이길 확률이 같은 형식으로 주어진다.
두 확률은 모두 0 이상 100 이하의 정수다. 성과 이름에는 공백이 없다.
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 그 경기가 끝날 때까지 걸리는 시간의 기댓값을 분 단위로 나타낸 값이다.
y는 소수점 일곱째 자리에서 반올림해 소수점 여섯째 자리까지 출력하며, 자리가 모자라면 0을 채워 소수점 아래를 항상 여섯 자리로 맞춘다. 입력은 반올림 결과가 갈리는 경계값이 나오지 않도록 만들어져 있다.
한 선수가 모든 게임을 이기면 세 세트가 모두 6-0으로 끝나 경기는 18게임으로 끝난다. 이때 걸리는 시간은 항상 90분이다.