dsalgo/
number_of_divisors_from_prime_factorize_result_modular.rs

1pub fn number_of_divisors(
2    modulus: usize,
3    factors: &[(usize, usize)],
4) -> usize {
5    let mut c = 1;
6
7    for (_, e) in factors.iter() {
8        c *= e + 1;
9
10        c %= modulus;
11    }
12
13    c
14}
15
16#[cfg(test)]
17
18mod tests {
19
20    use super::*;
21
22    #[test]
23
24    fn test() {
25        let m = 1_000_000_007;
26
27        let cases =
28            vec![(vec![(2, 2), (3, 1)], 6), (vec![(2, 1), (3, 1), (5, 1)], 8)];
29
30        for (factors, ans) in cases {
31            assert_eq!(number_of_divisors(m, &factors), ans);
32        }
33    }
34}