use std::io::*; use std::str::FromStr; #[allow(dead_code)] fn get_line() -> String { let stdin = stdin(); let mut line = String::new(); stdin.lock().read_line(&mut line).expect("io error."); line.trim().to_string() } #[allow(dead_code)] fn cast(s: &str) -> T { s.parse().ok().expect("parse error.") } #[allow(dead_code)] fn get_vec() -> Vec { (&get_line()).split(' ').map(cast::).collect() } fn main() { let v: Vec = get_vec(); for i in v[0]..v[1]+1 { if i % 3 == 0 || contain3(i) { println!("{}", i); } } } fn contain3(n: u64) -> bool { let mut n = n; while n > 0 { if n % 10 == 3 { return true; } n /= 10; } return false; }