https://www.acmicpc.net/problem/1344
문제
홍준이는 축구 경기를 보고 있다. 그러다가 홍준이는 역시 두 팀 중 적어도 한 팀이 골을 소수로 득점할 확률이 궁금해 졌다. 축구 경기는 90분동안 이루어지고, 분석을 쉽게하기 위해서 경기를 5분 간격으로 나눴다. 처음 간격은 처음 5분이고, 두 번째 간격은 그 다음 5분, 그리고 이런식으로 나눈다. 경기가 진행되는 동안 각 간격에서 A팀이 득점할 확률과 B팀이 득점할 확률이 주어진다. 그리고, 각 간격에서 두 팀은 각각 많아야 한 골을 득점할 수 있다. 경기가 끝난 후 적어도 한 팀이 골을 소수로 득점할 확률을 구하시오.
입력
첫째 줄에 A팀이 득점할 확률, 둘째 줄에 B팀이 득점할 확률이 퍼센트 단위로 주어진다. 퍼센트 단위로 주어지는 확률은 모두 0보다 크거나 같고 100보다 작거나 같은 정수이다.
출력
첫째 줄에 적어도 한 팀이 골을 소수로 득점할 확률을 출력한다. 정답과의 절대/상대 오차가 10-6이내인 경우에 정답이다.
from itertools import combinations
A = int(input())
B = int(input())
rounds = [i for i in range(1, 90 // 5 + 1)]
primes = [2, 3, 5, 7, 11, 13, 17]
pA = A / 100.0
qA = 1 - pA
pB = B / 100.0
qB = 1 - pB
sumA = 0
sumB = 0
# p(k) = 18Ck * p^k * q^(18-k)
for i in range(len(primes)):
# nCk = n! / (n-k)! * k!
combi = len(list(combinations(rounds, primes[i])))
sumA += combi * (pA**primes[i]) * (qA**(18-primes[i]))
sumB += combi * (pB**primes[i]) * (qB**(18-primes[i]))
print(sumA+sumB - sumA*sumB)
'Coding Test > 백준' 카테고리의 다른 글
[백준] / [Python] / [1515] 수 이어 쓰기 (0) | 2024.06.05 |
---|---|
[백준] / [Python] / [21921] 블로그 (0) | 2024.06.05 |
[백준] / [Python] / [9934] 완전 이진 트리 (1) | 2024.06.04 |
[백준] / [Python] / [2193] 이친수 (0) | 2024.06.04 |
[백준] / [Python] / [19637] IF문 좀 대신 써줘 (0) | 2024.06.04 |