[Silver / 13251] 조약돌 꺼내기
🔷 분류
수학, 조합론, 확률론
✒️ 문제 설명
효빈이의 비밀 박스에는 조약돌이 N개 들어있다. 조약돌의 색상은 1부터 M까지 중의 하나이다.
비밀 박스에서 조약돌을 랜덤하게 K개 뽑았을 때, 뽑은 조약돌이 모두 같은 색일 확률을 구하는 프로그램을 작성하시오.
⬅️ 입력
첫째 줄에 M (1 ≤ M ≤ 50)이 주어진다.
둘째 줄에는 각 색상의 조약돌이 몇 개 있는지 주어진다. 각 색상의 조약돌 개수는 1보다 크거나 같고 50보다 작거나 같은 자연수이다.
셋째 줄에는 K가 주어진다. (1 ≤ K ≤ N)
➡️ 출력
첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다.
💻 코드 (C++)
#include <iostream>
using namespace std;
int A[51];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int m;
cin >> m;
int total = 0;
double ans = 0.0;
for(int i = 0; i < m; i++) {
cin >> A[i];
total += A[i];
}
int k;
cin >> k;
for(int i = 0; i < m; i++) {
double prob = 0.0;
if(A[i] >= k) {
prob = 1.0;
for(int j = 0; j < k; j++) {
prob *= (double)(A[i] - j) / (total - j);
}
ans += prob;
}
}
cout.precision(15); // 소수점 15번째까지 출력
cout << ans;
return 0;
}
공유하기
Twitter Facebook LinkedIn글 이동
Comments