use std::collections::HashSet; fn pr(s: &Vec) { for c in s.iter() { print!("{}", c); } println!(""); } fn dv(k: u32) -> Vec { let mut rms = HashSet::new(); let mut res: Vec = Vec::new(); let mut n = 1u32; loop { if rms.contains(&n) { break; } rms.insert(n); if n == 0 { res.clear(); res.push(0); break; } while n < k { n *= 10; res.push(0u8); } let m = n / k; if m > 10 { println!("fail! {}", m); } res.pop(); //print!("{}", m); res.push(m as u8); n = n - m * k; } return res; } fn main() { let mut max = 0; let mut max_d = 0; for i in 1..1000 { let r = dv(i); if r.len() > max { max_d = i; max = r.len(); } //pr(&r); } println!("{}", max_d); }