1359번 복권
이왜틀?
아니 뭔 짓을 한거야
StringTokenizer st=new StringTokenizer(br.readLine()," ");
long a=Long.parseLong(st.nextToken());
long b=Long.parseLong(st.nextToken());
long c=Long.parseLong(st.nextToken());
long r=f(a)/(f(a-1)*f(b));
r=f(r)/(f(r-1)*f(c));
bw.write((double)1/r+"");
static long f(long a){
if(a==1) return a;
else return a*f(a-1);
}
조합 계산을 시도한 것 같은데…
런타임에러고 나발이고 계산 자체가 틀렸구만
설계
1부터 N까지의 수 중에 서로 다른 M개의 수를 각자 골라 K개의 수가 같으면 당첨
내가 뽑은 M개 중 i개가 겹치는 경우와 남은 숫자에서 상대가 M - i개를 뽑는 경우를 곱하면 된다.
대충 그런 수식대로 계산
구현
import math
N, M, K = map(int, input().split())
result = 0;
for i in range(K, M + 1):
result += math.comb(M, i) * math.comb(N - M, M - i)
print(result / math.comb(N, M))
채점
반성
처음에 조합 계산을 일일히 구현했다가 틀렸다.
아마 부동소수점 오차 문제였으리라.
그래서 파이썬에서 제공하는 comb 함수를 쓰니 통과했다.
젠장 파이썬 넌 못하는게 뭐야
코드 확인