문제 요약 및 풀이
python itertools에는 너무나 좋은 것이 많다. ㅎㅎ
이 문제는 그냥 모든 경우를 탐색해도 된다. 그냥 빠르게 긁어버리자. (N,M이 8보다 작거나 같다. 경우 의 수가 8C4 정도가 최대다. 충분히 다 탐색할 수 있다.)
풀이 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from itertools import combinations
n, m, k = map(int,input().split())
ans = 0
all = [*combinations([i for i in range(n)], m)] # 모든 경우의 수
for i in all:
cnt = 0
for j in range(m):
if i[j] < m: # 0 ~ m-1이 복권에 당첨되는 번호라고 가정한다.
cnt+=1
if cnt >= k: # k 개 이상 맞은 경우
ans += 1
print(ans / len(all))
끝