이반(Ivan)은 수집이 취미이다. 우표나 동전 같은 물건을 모으는 사람들과 달리, 그는 소프트웨어 버그를 수집한다. 새 프로그램을 손에 넣으면, 이반은 그 프로그램에서 나올 수 있는 모든 버그를 n개의 종류(category)로 분류한다. 그는 매일 정확히 하나의 버그를 발견하고, 그 버그와 버그의 종류를 표에 기록한다. 모든 종류의 버그를 하나 이상 발견하고 나면, 그는 그 프로그램을 "형편없다(disgusting)"고 선언하고 표를 자신의 홈페이지에 공개한 뒤, 그 프로그램을 완전히 잊어버린다.
두 회사 매크로소프트(Macrosoft)와 마이크로하드(Microhard)는 치열하게 경쟁하고 있다. 마이크로하드는 매크로소프트의 어떤 프로그램의 판매량을 떨어뜨리고 싶어서, 그 프로그램이 형편없다는 것을 증명하도록 이반을 고용했다. 그런데 이반에게는 골치 아픈 문제가 있다. 이 새 프로그램은 s개의 하위 구성요소(subsystem)로 이루어져 있는데, 각 구성요소마다 모든 종류의 버그를 전부 찾으려면 목표 시점까지 너무 오랜 시간이 걸린다. 그래서 이반과 마이크로하드는 더 간단한 기준에 합의했다. 이반은 각 하위 구성요소에서 버그를 하나 이상, 그리고 각 종류의 버그를 하나 이상만 찾으면 된다.
매크로소프트는 이 계획을 알고 있으며, 이반이 프로그램을 형편없다고 선언하기까지 걸리는 시간을 예측하고 싶어 한다. 곧 새 버전을 출시할 예정이라, 그 예측에 따라 계획을 조정해 더 빨리 내놓을 수 있기 때문이다. 이미 낡아버린 버전에 대한 이반의 평가에는 아무도 관심이 없을 것이다.
발견되는 버그는 어떤 종류이든 같은 확률을 가진다. 마찬가지로, 버그는 어떤 하위 구성요소에서든 같은 확률로 발견된다. 하나의 버그가 서로 다른 두 종류에 동시에 속하거나, 서로 다른 두 하위 구성요소에서 동시에 발생하는 일은 없다. 프로그램의 버그 수는 사실상 무한하므로, 어떤 종류-구성요소의 버그를 아무리 많이 찾더라도 그 종류-구성요소에서 새 버그를 찾을 확률은 줄어들지 않는다.
이반이 프로그램을 형편없다고 선언하기까지 걸리는 평균 일수(이반이 일하는 날의 수)를 구하여라.
두 정수 n과 s가 주어진다 (0<n,s≤1000). n은 버그 종류의 수, s는 하위 구성요소의 수이다.
이반이 프로그램을 형편없다고 선언하기까지 필요한 근무 일수의 기댓값을, 소수점 아래 정확히 여섯 자리까지 반올림하여 출력한다.