5025 : 코인 가차
•시간제한: 2.000 S
•메모리제한: 256 MB
•제출: 2
•통과: 2
•만든사람: suakii
문제 설명
$N$종류의 코인 중 하나가 같은 확률로 나오는 뽑기 기계가 있습니다.
모든 종류의 코인을 적어도 하나씩 모을 때까지 필요한 총 금액의 기댓값을 구하는 프로그램을 작성하십시오.
(단, 코인은 한 번 뽑을 때마다 $1$원이 든다고 가정합니다.)
[1. 기댓값(Expected Value)의 수학적 정의]
확률변수 $X$가 취할 수 있는 값들을 $x_k$, 그 값이 나타날 확률을 $p_k$라고 할 때, 기댓값 $E(X)$는 각 결과값에 해당 확률을 곱한 것들의 총합으로 정의됩니다.
$$\displaystyle E(X) = \sum_{k} \Big( x_k \times p_k \Big)$$
[2. 새로운 코인을 뽑기 위해 필요한 횟수의 기댓값]
이미 $k$종류($0 \le k < N$)의 서로 다른 코인을 모았다고 할 때, 아직 모으지 못한 새로운 종류의 코인은 $N - k$종류가 남아 있습니다.
다음 번 뽑기에서 아직 없는 새로운 코인이 나올 확률은 $\displaystyle \frac{N - k}{N}$입니다.
따라서 다음 새로운 코인을 뽑을 때까지 필요한 뽑기 횟수의 기댓값은 성공 확률의 역수와 같습니다.
$$\displaystyle \frac{1}{\frac{N - k}{N}} = \frac{N}{N - k}$$
[3. 모든 종류를 모으기 위한 총 금액의 기댓값 공식]
기댓값의 선형성에 의해, $0$종류에서 시작하여 $N$종류를 모두 모을 때까지 필요한 총 횟수의 기댓값은 각 단계에서 새로운 코인을 얻기까지 필요한 횟수들의 총합과 같습니다.
(한 번 뽑을 때 $1$원이 들므로, 총 횟수의 기댓값이 곧 필요한 총 금액의 기댓값입니다.)
$$\displaystyle \text{총 금액 기댓값} = \sum_{k=0}^{N-1} \frac{N}{N - k} = N \left( \frac{1}{N} + \frac{1}{N-1} + \dots + \frac{1}{2} + \frac{1}{1} \right) = N \sum_{i=1}^{N} \frac{1}{i}$$
따라서 $1$부터 $N$까지 $\displaystyle \frac{1}{i}$을 누적한 조화수(Harmonic number)에 $N$을 곱하면 모든 종류를 모으기 위한 총 금액의 기댓값이 됩니다.
[제약 조건]
• $2 \le N \le 1\,000\,000$
• $N$은 정수입니다.
모든 종류의 코인을 적어도 하나씩 모을 때까지 필요한 총 금액의 기댓값을 구하는 프로그램을 작성하십시오.
(단, 코인은 한 번 뽑을 때마다 $1$원이 든다고 가정합니다.)
[1. 기댓값(Expected Value)의 수학적 정의]
확률변수 $X$가 취할 수 있는 값들을 $x_k$, 그 값이 나타날 확률을 $p_k$라고 할 때, 기댓값 $E(X)$는 각 결과값에 해당 확률을 곱한 것들의 총합으로 정의됩니다.
$$\displaystyle E(X) = \sum_{k} \Big( x_k \times p_k \Big)$$
[2. 새로운 코인을 뽑기 위해 필요한 횟수의 기댓값]
이미 $k$종류($0 \le k < N$)의 서로 다른 코인을 모았다고 할 때, 아직 모으지 못한 새로운 종류의 코인은 $N - k$종류가 남아 있습니다.
다음 번 뽑기에서 아직 없는 새로운 코인이 나올 확률은 $\displaystyle \frac{N - k}{N}$입니다.
따라서 다음 새로운 코인을 뽑을 때까지 필요한 뽑기 횟수의 기댓값은 성공 확률의 역수와 같습니다.
$$\displaystyle \frac{1}{\frac{N - k}{N}} = \frac{N}{N - k}$$
[3. 모든 종류를 모으기 위한 총 금액의 기댓값 공식]
기댓값의 선형성에 의해, $0$종류에서 시작하여 $N$종류를 모두 모을 때까지 필요한 총 횟수의 기댓값은 각 단계에서 새로운 코인을 얻기까지 필요한 횟수들의 총합과 같습니다.
(한 번 뽑을 때 $1$원이 들므로, 총 횟수의 기댓값이 곧 필요한 총 금액의 기댓값입니다.)
$$\displaystyle \text{총 금액 기댓값} = \sum_{k=0}^{N-1} \frac{N}{N - k} = N \left( \frac{1}{N} + \frac{1}{N-1} + \dots + \frac{1}{2} + \frac{1}{1} \right) = N \sum_{i=1}^{N} \frac{1}{i}$$
따라서 $1$부터 $N$까지 $\displaystyle \frac{1}{i}$을 누적한 조화수(Harmonic number)에 $N$을 곱하면 모든 종류를 모으기 위한 총 금액의 기댓값이 됩니다.
[제약 조건]
• $2 \le N \le 1\,000\,000$
• $N$은 정수입니다.
입력 설명
첫째 줄에 코인의 종류 수 $N$이 주어집니다.
출력 설명
기댓값을 출력하십시오.
정답과의 절대 오차 또는 상대 오차가 $10^{-6}$ 이하라면 정답으로 인정합니다.
(단, 출력값을 $A$, 실제 정답을 $B$라 할 때 절대 오차는 $|A - B|$, 상대 오차는 $\frac{|A - B|}{|B|}$로 정의합니다.)
정답과의 절대 오차 또는 상대 오차가 $10^{-6}$ 이하라면 정답으로 인정합니다.
(단, 출력값을 $A$, 실제 정답을 $B$라 할 때 절대 오차는 $|A - B|$, 상대 오차는 $\frac{|A - B|}{|B|}$로 정의합니다.)
입력 예시
COPY
복사되었습니다!
복사되었습니다!
3
출력 예시
COPY
복사되었습니다!
복사되었습니다!
5.500000000000