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}