문제 링크


🔷 분류

수학, 조합론, 확률론

✒️ 문제 설명

효빈이의 비밀 박스에는 조약돌이 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;
}

글 이동

Comments