let M = Int(readLine()!)!
let stones = readLine()!.split(separator: " ").map { Int(String($0))! }
let N = Double(stones.reduce(0, +))
let K = Int(readLine()!)!
var answer = 0.0
for stone in stones {
if stone < K {
continue
}
var probability = 1.0
var stoneCount = Double(stone)
var allCount = N
for _ in 0..<K {
probability *= stoneCount / allCount
stoneCount -= 1
allCount -= 1
}
answer += probability
}
print(answer)
각 조약돌의 색깔마다 K번 뽑을 동안 같은 색이 나올 확률을 구하고 이 확률들을 다 더해주면 정답을 구할 수 있다.
또는 각 색깔별로 조약돌을 K개 뽑는 경우의 수를 구한 후 전체 돌에서 N개를 뽑는 경우의 수로 나눠도 답을 구할 수 있다.