해외 그림엽서
시간 제한2초메모리 제한512 MB
카드를 무작위 묶음으로 내려놓으며 맨 위 카드가 뒤집혀 있으면 묶음 전체를 뒤집을 때, 그림이 아래로 놓이는 카드 수의 기댓값을 구한다.
문제
표도르는 여행을 자주 다니고, 그동안 세계 곳곳에서 그림엽서를 모았다. 엽서마다 한쪽 면에는 그림이 있고, 반대 면에는 주소와 글을 적는 칸이 있다.
집에서 파티를 열던 표도르는 엽서를 모두 탁자에 늘어놓아 손님에게 보여주기로 했다. 엽서는 처음에 한 무더기로 표도르의 손에 들려 있고, 그중 일부는 그림이 아래를 향한 채 거꾸로 들어 있다. 엽서를 한 장씩 확인해 뒤집는 대신, 표도르는 다음 과정을 반복한다.
- 손에 남은 엽서 수를 이라 한다. 부터 까지의 정수 중에서 를 균등한 확률로 고르고, 무더기의 위에서 장을 집는다.
- 집은 장 중 맨 위 엽서를 본다. 그 엽서가 거꾸로 놓여 있으면 장을 한 번에 통째로 뒤집는다.
- 그 장을 더 뒤집지 않고 탁자에 내려놓는다.
- 손에 엽서가 남아 있으면 1번으로 돌아간다.
장을 통째로 뒤집으면 그 안의 엽서가 모두 반대로 놓인다. 그림이 위를 향했던 엽서는 아래를 향하고, 아래를 향했던 엽서는 위를 향한다. 매번 고르는 는 앞선 선택과 독립이다.
과정이 끝난 뒤 탁자 위에서 그림이 아래를 향한 엽서 개수의 기댓값을 구하라.
입력
첫 줄에 C와 W로만 이루어진 문자열 가 주어진다. 의 번째 문자는 처음 무더기의 위에서 번째 엽서를 뜻한다. C는 그림이 위를 향한 엽서, W는 그림이 아래를 향한 엽서다. 의 길이는 이상 이하다.
출력
탁자 위에서 그림이 아래를 향한 엽서 개수의 기댓값을 소수점 아래 여섯째 자리까지 반올림해 한 줄에 출력한다. 뒤에 붙는 0도 생략하지 않고 소수점 아래 여섯 자리를 모두 출력한다.