
문제
N개의 동전이 탁자 위에 놓여져 있다. 동전은 모두 앞면이 위를 향하고 있다.
K개의 정수 A[i]가 주어진다. 가장 처음에 A[1]개의 동전을 랜덤하게 골라서 뒤집는다. 그 다음에는 A[2]개의 동전을 랜덤하게 골라서 뒤집는다. 이 과정을 계속해서 반복하고, 마지막에는 A[K]개의 동전을 랜덤하게 골라서 뒤집는다.
모든 과정을 완료했을 때, 앞면이 위를 향하는 동전 개수의 기댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 동전의 개수 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 K (1 ≤ K ≤ 50)이 주어진다. 셋째 줄에는 A[i] (1 ≤ A[i] ≤ N)가 주어진다.
출력
모든 과정을 완료한 후에 앞면이 위를 향하는 동전 개수의 기댓값을 출력한다.
정답과의 절대/상대 오차는 10-9까지 허용한다.
풀이
코드
n = int(input())
k = int(input())
pr = n
for i in map(int, input().split()):
tmp = 0
tmp = tmp + pr * (1 - float(i / n))
tmp = tmp + (n - pr) * float(i / n)
pr = tmp
print(pr)
'공부 > Algorithm' 카테고리의 다른 글
[PS_DP] 3078 좋은 친구 파이썬 (0) | 2022.02.22 |
---|---|
[PS_스택 큐 덱] 1158 요세푸스 문제 파이썬 (0) | 2022.02.22 |
[PS_DP] 13250 주사위 게임 파이썬 (0) | 2022.01.20 |
[백준] 백준 시작 (0) | 2021.10.28 |