dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
use std::ops::*;

pub fn power_of_k<T>(
    modulus: T,
    k: T,
    size: usize,
) -> Vec<T>
where
    T: Copy + Mul<Output = T> + From<u32> + Rem<Output = T>,
{
    let mut a: Vec<T> = vec![1.into(); size];

    for i in 0..size - 1 {
        a[i + 1] = k * a[i] % modulus;
    }

    a
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        const MOD: i64 = 1_000_000_007;

        let pow_8 = power_of_k(MOD, 8, 20);

        assert_eq!(
            pow_8,
            [
                1, 8, 64, 512, 4096, 32768, 262144, 2097152, 16777216,
                134217728, 73741817, 589934536, 719476260, 755810045, 46480318,
                371842544, 974740338, 797922655, 383381198, 67049563
            ]
        );
    }
}