티스토리 뷰
https://www.acmicpc.net/problem/1359
1359번: 복권
첫째 줄에 세 정수 N, M, K가 주어진다.
www.acmicpc.net
문제이해
해당 문제는 콤비네이션을 구해 확률을 구하면 되는 문제이다.
단 해당 문제의 경우 K개 이상 맞으면 당첨이기 때문에 K개 이상 맞은 모든 경우의 수를 더해 확률을 계산해 주어야 한다.
풀이
문제해결은 다음과 같다.
import java.util.Scanner;
public class test39{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int k = sc.nextInt();
double res = 0.0;
double p = Combination(n, m);
//m개중 K개 m개중 K+1개 .... m개중 m개를 포함하는 경우의 수를 모두 더해서 풀이
while(m >= k){
if(n - m < m - k){
k++;
continue;
}
//M에서K를 포함하는 경우의 수를 구하기
double c = Combination(m, k) * Combination(n-m, m-k);
res += c/p;
k++;
}
System.out.println(res);
}
static long Combination(int n, int r){
int p = 1;
int c = 1;
while(r > 0){
c *= n--;
p *= r--;
}
return c / p;
}
}