이번 문제는 총 18번 안에 소수번의 경우의 수가 발생할 확률을 계산하는 것입니다. 제가 축구를 잘 몰라서 총 경기시간이 90분이라는 것도 몰랐네요. 한 100분 하는 줄 알았네요.
아주 단순한 확률 계산만 하면 됩니다. 어떤 사건이 일어날 확률이 \(p\) 라고 한다면, 18번안 에 k번 해당 사건이 일어날 확률은 이산확률로 계산이 됩니다.
\[ P(k) = _{18}C_k p^k (1-p)^{18-k} \]
18 이하의 소수는 2, 3, 5, 7, 11, 13, 17 이 있으니까요. k값을 달리하면서 확률을 더해주면 됩니다. A팀과 B팀이 있으니까, 두 팀의 확률을 더하고, 두 팀이 동시에 소수 점수를 낼 확률을 빼주면 됩니다.
Gold IV 난이도이긴 하지만 중학 수학 정도의 지식만 있으면 풀 수 있는 문제입니다.
제가 작성한 소스입니다. 소스는 참고용으로 봐주세요.
//--------------------------------------------------------------------
// baekjoon #1344 - Soccer
// - by Aubrey Choi
// - created at 2019-08-11
//--------------------------------------------------------------------
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c[7]={2, 3, 5, 7, 11, 13, 17}, d[7]={153, 816, 8568, 31824, 31824, 8568, 18};
scanf("%d%d", &a, &b);
double pa=a/100.0, pb=b/100.0, sa=0, sb=0;
for(int i=0;i<7;i++) sa += d[i]*pow(pa,c[i])*pow(1.0-pa,18-c[i]);
for(int i=0;i<7;i++) sb += d[i]*pow(pb,c[i])*pow(1.0-pb,18-c[i]);
printf("%.9lf\n", sa+sb-sa*sb);
}
반응형
'Programming > BOJ' 카테고리의 다른 글
#1353 합과 곱(Mathematics, Binary Search) (0) | 2020.02.01 |
---|---|
#1351 무한 수열 (Dynamic Programming) (0) | 2020.02.01 |
#1342 행운의 문자열(Back tracking) (0) | 2020.01.26 |
#1339 단어 수학(Mathematics) (0) | 2020.01.26 |
#1325 효율적인 해킹(DFS) (0) | 2020.01.24 |
댓글