use std::collections::VecDeque; fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec() -> Vec { read::().split_whitespace() .map(|e| e.parse().ok().unwrap()).collect() } fn main() { let nk: Vec = read_vec(); let n: usize = nk[0]; let k: usize = nk[1]; let a: Vec = read_vec(); let mut q: VecDeque = VecDeque::from(a.clone()); let mut sum: usize = 0; for i in 0..n { sum += a[i]; } let mut m: usize = 0; for _i in 0..n { let num: usize = q.pop_front().unwrap(); m *= k; m += num; m %= sum; } println!("{}", m); }