struct Scanner { tokens: Vec, index: usize, } impl Scanner { fn new() -> Self { Scanner { tokens: Vec::new(), index: 0, } } fn next(&mut self) -> String { while self.index == self.tokens.len() { let mut line = String::new(); std::io::stdin().read_line(&mut line).expect("input error"); self.tokens = line.split_whitespace().map(String::from).collect(); self.index = 0; } let result = self.tokens[self.index].clone(); self.index += 1; result } fn next_i32(&mut self) -> i32 { self.next().parse().unwrap() } } fn cdiv(a: i32, b: i32) -> i32 { (a / b) + if a % b == 0 { 0 } else { 1 } } fn main() { let mut scanner = Scanner::new(); let a = scanner.next_i32(); let b = scanner.next_i32(); println!("{}", cdiv(b, a)); }