윔블던

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

여행을 끝내고 돌아갈 날이 되었다. 아쉬운 것이야 많지만 그중 가장 아쉬운 점은 내가 2만 피트 상공을 날아가는 동안 윔블던 테니스 경기가 끝나 버린다는 것이다.

어, 잠깐. 잘못 생각했다. 경기가 시작하는 시각이야 낮이지만 테니스는 얼마든지 길어질 수 있는 종목이다. 저녁까지 경기가 이어진다면 아마 볼 수 있을 텐데. 경기는 언제쯤 끝날까?

나는 선수마다 그 선수가 서브권을 가졌을 때 이길 확률을 모두 알고 있다. 그런데 경기는 여러 세트로, 세트는 다시 여러 게임으로 나뉘고 누가 서브를 하느냐에 따라 승률이 달라져서 경기가 얼마나 길어질지는 나 혼자 예측할 수가 없다.

대회 규칙은 간단하다.

  • 두 선수의 경기는 여러 세트로 이루어진다. 한 선수가 먼저 3세트를 이기면 경기는 그 자리에서 끝난다. 그래서 최종 세트 스코어는 3-0, 3-1, 3-2 중 하나다.
  • 한 세트는 여러 게임으로 이루어지고, 게임 하나는 반드시 5분 동안 진행된다.
  • 한 선수가 6게임 이상 이기면서 상대보다 2게임 이상 앞서면 그 세트가 끝나고, 그 선수가 세트를 가져간다.
  • 게임 스코어가 6-6이 되면 타이브레이크 게임을 하나 더 해서 그 게임을 이긴 선수가 세트를 가져간다.
  • 그래서 한 세트의 게임 스코어는 6-0, 6-1, 6-2, 6-3, 6-4, 7-5와 타이브레이크로 갈린 7-6까지 일곱 가지뿐이다.
  • 게임 하나는 처음부터 끝까지 한 선수가 서브를 하고, 게임이 끝날 때마다 서브권이 상대에게 넘어간다. 승패와 상관없이 무조건 교대하며, 이 교대는 세트 경계를 넘어 경기 내내 이어진다. 타이브레이크 게임도 다른 게임과 똑같이 서브 순서를 따르고 5분이 걸린다.

예를 들어 A와 B의 경기에서 A가 첫 서브를 했고 어느 세트가 6-1로 끝났다고 하자. 그 세트의 마지막 게임은 A가 서브했으므로 다음 세트의 첫 서브는 B가 한다. 세트를 누가 이겼는지는 상관이 없다. 즉 직전 세트의 마지막 게임에서 서브한 선수의 상대가 다음 세트의 첫 게임을 서브한다.

내가 아는 정보는 두 선수가 만났을 때 서브권을 가진 선수가 이길 확률뿐이다. 이 정보만으로 두 선수의 경기가 끝날 때까지 걸리는 시간의 기댓값을 구하는 프로그램을 작성하시오.

입력

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

각 테스트 케이스는 두 줄이다. 첫 줄에는 그 경기의 첫 서브를 하는 선수의 성과 이름이 공백으로 구분되어 주어지고, 이어서 그 선수가 자신이 서브하는 게임에서 이길 확률이 백분율 정수로 주어진다. 둘째 줄에는 상대 선수의 성과 이름, 그리고 그 선수가 자신이 서브하는 게임에서 이길 확률이 같은 형식으로 주어진다.

두 확률은 모두 0 이상 100 이하의 정수다. 성과 이름에는 공백이 없다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 그 경기가 끝날 때까지 걸리는 시간의 기댓값을 분 단위로 나타낸 값이다.

y는 소수점 일곱째 자리에서 반올림해 소수점 여섯째 자리까지 출력하며, 자리가 모자라면 0을 채워 소수점 아래를 항상 여섯 자리로 맞춘다. 입력은 반올림 결과가 갈리는 경계값이 나오지 않도록 만들어져 있다.

힌트

한 선수가 모든 게임을 이기면 세 세트가 모두 6-0으로 끝나 경기는 18게임으로 끝난다. 이때 걸리는 시간은 항상 90분이다.