본문 바로가기
Programming/BOJ

#1344 축구(Mathematics)

by 작은별하나 2020. 1. 30.
반응형

이번 문제는 총 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 난이도이긴 하지만 중학 수학 정도의 지식만 있으면 풀 수 있는 문제입니다.

 

Soccer

 

제가 작성한 소스입니다.  소스는 참고용으로 봐주세요.

 

//--------------------------------------------------------------------
//  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);
}
728x90

댓글