반응형
M개의 색, M개의 색을 가진 조약돌이 몇개인지, 랜덤하게 뽑을 수 K를 입력받습니다.
이때 K개의 조약돌이 모두 같은 색일 확률을 구하면 됩니다.
2개의 랜덤한 조약돌을 뽑을때의 경우의 수는 이렇습니다.
총 18개 중 5개의 조약돌이 있는 색을 2번 뽑을 확률 -> 5 / 18 * 4 / 17
즉
A개의 조약돌을 가진 색을 2번 뽑을 확률 -> (A개 / 조약돌 총갯수) * (A - 1개 / 조약돌 총갯수 - 1)
이러한 점화식을 바탕으로 코드를 만들면 쉽게 풀 수 있습니다.
정답 코드
#include <iostream>
#include <vector>
using namespace std;
static int D[1001];
double Total = 0;
int M, K;
// 색상 A 수 / 전체 수 -> 색상 A수 --; (연속 수 <= A 수) -> 반복
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> M;
for (int i = 0; i < M; i++) {
cin >> D[i];
Total += D[i];
}
cin >> K;
double result = 0.0f;
for (int i = 0; i < M; i++) {
if (D[i] < K)
continue;
double val = 1.0;
for (int j = 0; j < K; j++) {
val *= double(D[i] - j) / (Total - j);
}
result += val;
}
cout << fixed;
cout.precision(18);
cout << result;
}
반응형
LIST
'알고리즘 문제 > 백준' 카테고리의 다른 글
1256 사전 (조합론) [Gold II] (1) | 2024.05.01 |
---|---|
1722 순열의 순서 (조합론) [Gold V] (0) | 2024.04.30 |
1010 다리 놓기 (조합론) [Silver V] (0) | 2024.04.29 |
2775 부녀회장이 될테야 (조합론) [Bronze I] (0) | 2024.04.28 |
11050, 11051 이항계수 구하기 (조합론) [Bronze I, Silver II] (0) | 2024.04.27 |