https://atcoder.jp/contests/abc254/tasks/abc254_b
let mut b = Vec::with_capacity(a.len() + 1); b.set_len(a.len() + 1);
でVecのサイズを変えられそうですが、
error[E0133]: call to unsafe function is unsafe and requires unsafe function or block --> ABC254B.rs:22:2 | 22 | b.set_len(a.len() + 1); | ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
と怒られてしまいます。仕方がないのでpushでサイズを変えました。
// Practical Computing #![allow(non_snake_case)] //////////////////// library //////////////////// fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line.trim().parse().ok().unwrap() } fn join<T: ToString>(v: &Vec<T>) -> String { v.iter().map(|x| x.to_string()).collect::<Vec<String>>().join(" ") } //////////////////// process //////////////////// fn update(a: &Vec<i32>) -> Vec<i32> { let mut b = Vec::with_capacity(a.len() + 1); b.push(a[0]); for i in 1..(a.len()) { b.push(a[i-1] + a[i]) } b.push(a[a.len()-1]); return b } fn main() { let N: usize = read(); let mut a = vec![1]; println!("{}", join(&a)); for _ in 1..N { a = update(&a); println!("{}", join(&a)) } }