Files
2026-01-09 21:35:04 -08:00

39 lines
958 B
Rust

use std::io::stdin;
fn main() {
let mut line = String::new();
stdin().read_line(&mut line).unwrap();
let mut iter = line.trim().split(' ').map(|x| x.parse::<usize>().unwrap());
let (n, m, k) = (
iter.next().unwrap(),
iter.next().unwrap(),
iter.next().unwrap(),
);
let mut comb_mem = [[0u64; 9]; 9];
for i in 0..=n {
comb_mem[i][0] = 1; // nC0 = 1
for j in 1..=i {
comb_mem[i][j] = comb_mem[i - 1][j - 1] + comb_mem[i - 1][j];
}
}
let total_cases = comb_mem[n][m];
let mut winning_cases = 0u64;
for i in k..=m {
if n >= m && (n - m) >= (m - i) {
let ways_to_match = comb_mem[m][i];
let ways_to_pick_rest = comb_mem[n - m][m - i];
winning_cases += ways_to_match * ways_to_pick_rest;
}
}
let probability = winning_cases as f64 / total_cases as f64;
println!("{:.10}", probability);
}