dsalgo/
tribonacci_sequence_modular.rs

1pub fn tribonacci(
2    size: usize,
3    modulus: usize,
4) -> Vec<usize> {
5    let mut t = vec![0; size];
6
7    t[2] = 1;
8
9    for i in 3..size {
10        t[i] = (t[i - 1] + t[i - 2] + t[i - 3]) % modulus;
11    }
12
13    t
14}
15
16#[cfg(test)]
17
18mod tests {
19
20    use super::*;
21
22    #[test]
23
24    fn test() {
25        const MOD: usize = 1000000007;
26
27        let n = 100000;
28
29        let t = tribonacci(n, MOD);
30
31        assert_eq!(t[..10].to_vec(), [0, 0, 1, 1, 2, 4, 7, 13, 24, 44,]);
32    }
33}