[Python] SW Expert Academy #1266 소수 완제품 확률

이재원·2024년 5월 1일

Samsung SW Expert Academy

목록 보기
34/34

📚문제: #5656 소수 완제품 확률(D6)

전체 코드

# 1266. 소수 완제품 확률

from math import factorial

# 전체 테스트 케이스 수 T
T = int(input())

# T개의 테스트 케이스
for t in range(1, T+1):
    
    # 정수 값이 주어진다.
    A, B = map(int, input().split())
    
    # 완제품을 만들 확률
    p_A = A / 100
    p_B = B / 100
    
    # A, B장인이 만든 제품이 모두 소수가 아닐 확률을 구핮.
    prime = [2, 3, 5, 7, 11, 13, 17]
    
    total_p_A = 0
    total_p_B = 0
    
    # 완제품의 수 : 0 ~ 18개
    for i in range(0, 18+1):
        
        # 소수일 때 skip
        if i in prime:
            
            continue
        
        # A가 만든 완제품이 소수가 아닐 확률
        total_p_A += (factorial(18) // (factorial(18-i) * factorial(i))) * (p_A**i) * ((1-p_A)**(18-i))
        total_p_B += (factorial(18) // (factorial(18-i) * factorial(i))) * (p_B**i) * ((1-p_B)**(18-i))
        
    ans = 1 - (total_p_A * total_p_B)
    
    print("#{} {:.6f}".format(t, ans, 6))

TIL

이항분포P = nCr × p^n × (1-p)^n
조합 개수nCr = n! / (n-r)!r!
여집합의 개념A, B 둘 중 하나라도 소수일 확률 = 1 - 둘다 소수가 아닐 확률

0개의 댓글