dsalgo/
tribonacci_sequence_modular.rs1pub 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}