diff --git a/storage/zeta/rs/completed/30160.rs b/storage/zeta/rs/completed/30160.rs new file mode 100644 index 0000000..cb7eca4 --- /dev/null +++ b/storage/zeta/rs/completed/30160.rs @@ -0,0 +1,48 @@ +use std::io::stdin; + +fn main() { + let mut line = String::new(); + stdin().read_line(&mut line).unwrap(); + let n: usize = line.trim().parse().unwrap(); + + let arr = { + line.clear(); + stdin().read_line(&mut line).unwrap(); + line.split(' ') + .map(|x| x.trim().parse::().unwrap()) + .collect::>() + }; + + /* + 0 + a1 // ds = a1 // dds = a1 + 4 * a1 + a2 // ds = 3 * a1 + a2 // dds = 2 * a1 + a2 + 9 * a1 + 4 * a2 + a3 // ds = 5 * a1 + 3 * a2 + a3 // dds = 2 * a1 + 2 * a2 + a3 // ds <- dds + ds + */ + + let mut ds = 0i64; + let mut dds = 0i64; + + let mut sum = 0i64; + let square_weighted_arr = (0..n) + .map(|i| { + dds = if i != 0 { + dds + arr[i] + arr[i - 1] + } else { + arr[i] + }; + ds = ds + dds; + sum += ds; + sum + }) + .collect::>(); + + println!( + "{}", + square_weighted_arr + .iter() + .map(|x| x.to_string()) + .collect::>() + .join(" ") + ); +} diff --git a/storage/zeta/rs/completed/33913.rs b/storage/zeta/rs/completed/33913.rs new file mode 100644 index 0000000..be9f230 --- /dev/null +++ b/storage/zeta/rs/completed/33913.rs @@ -0,0 +1,37 @@ +use std::io::stdin; + +const MOD: usize = 1_000_000_007; + +fn main() { + let mut line = String::new(); + stdin().read_line(&mut line).unwrap(); + + let n = line.trim().parse::().unwrap(); + + /* + f[0] even = 1 // empty + f[0] odd = 0 + f[1] even = 24 // without SC + f[1] odd = 2 // with SC + + f[2] even = f[1] even * 24 + f[1] odd * 2 + f[2] odd = f[1] even * 2 + f[1] odd * 24 + + */ + + let mut f0e = 1; + let mut f0i = 0; + let mut f1e = 24; + let mut f1i = 2; + + for _ in 2..=n { + let f2e = (f1e * 24 + f1i * 2) % MOD; + let f2i = (f1e * 2 + f1i * 24) % MOD; + f0e = f1e; + f0i = f1i; + f1e = f2e; + f1i = f2i; + } + + println!("{}", f1e); +}