Skip to main content

library_checker/enumerative_combinatorics/
binomial_coefficient_prime_mod.rs

1use competitive::num::mint_basic::DynMIntU32;
2use competitive::{math::MemorizedFactorial, prelude::*};
3
4#[verify::library_checker("binomial_coefficient_prime_mod")]
5pub fn binomial_coefficient_prime_mod(reader: impl Read, writer: impl Write) {
6    prepare_io!(reader, writer);
7    sc!(t, m: u32, nk: [(usize, usize); t]);
8    DynMIntU32::set_mod(m);
9    let max_n = nk.iter().map(|(n, _)| n).max().cloned().unwrap_or_default();
10    let f = MemorizedFactorial::new(max_n);
11    for (n, k) in nk {
12        let ans: DynMIntU32 = f.combination(n, k);
13        pp!(ans);
14    }
15}