rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

const MOD: i64 = 1_000_000_007;

impl Solution {
    fn check_record(n: i32) -> i32 {
        let n = n as usize;
        if n == 1 {
            return 3;
        }
        let mut p = vec![0; n + 1];
        let mut l = vec![0; n + 1];
        p[1] = 1;
        l[1] = 1;
        p[2] = 2;
        l[2] = 2;
        for i in 3..=n {
            p[i] = l[i - 1] + p[i - 1];
            p[i] %= MOD;
            l[i] = p[i - 1] + p[i - 2];
            l[i] %= MOD;
        }
        let mut lp = vec![0; n + 1];
        lp[0] = 1;
        for i in 1..=n {
            lp[i] = l[i] + p[i];
            lp[i] %= MOD;
        }

        let mut res: i64 = lp[n];
        for i in 0..n {
            res += (lp[i]) * (lp[n - 1 - i]);
            res %= MOD;
        }
        res as i32
    }
}

#[test]
fn test() {
    let n = 2;
    let res = 8;
    assert_eq!(Solution::check_record(n), res);
}