complete 30160.rs 33913.rs

This commit is contained in:
2025-12-20 15:38:21 +09:00
parent 1d587a15d9
commit ba16c74899
2 changed files with 85 additions and 0 deletions

View File

@@ -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::<i64>().unwrap())
.collect::<Vec<i64>>()
};
/*
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::<Vec<i64>>();
println!(
"{}",
square_weighted_arr
.iter()
.map(|x| x.to_string())
.collect::<Vec<String>>()
.join(" ")
);
}

View File

@@ -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::<usize>().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);
}