목공을 시작한 그는 기본기를 다지려고 나무 상자 만들기를 반복한다. 나무 상자 하나는 나무판자 N개를 이어 붙여 만든다. 다 만든 상자는 자리만 차지하므로 곧바로 분해해서, 나온 판자를 다음 상자에 쓴다.
상자를 분해해서 얻는 온전한 판자의 수는 항상 N개보다 적고, 분해가 늘 깔끔하게 되지는 않아 그 수는 확률적으로 정해진다. 0≤i<N인 모든 i에 대해 판자를 i개 얻을 확률은 정수 qi에 비례하며, qi/(q0+q1+⋯+qN−1)로 계산된다.
그는 지금 판자 M개를 가지고 있고, 더 이상 상자를 만들 수 없을 때까지 계속 상자를 만든다. 그가 만드는 상자 개수의 기댓값을 구하는 프로그램을 작성하라.