use proconio::input; const MAX: usize = 10_usize.pow(6); fn main() { input! { aa: [usize; 6], } let mut visited = vec![false; MAX]; for &a in &aa { visited[a] = true; for _ in 0..10 { for from in 0..MAX { if visited[from] { let to = add_without_carry_up(from, a); visited[to] = true; } } } } let ans = visited.iter().filter(|&&v| v).count(); println!("{}", ans); } fn add_without_carry_up(a1: usize, a2: usize) -> usize { let s1 = format!("{:06}", a1); let s2 = format!("{:06}", a2); let mut c = 0; for (c1, c2) in s1.chars().zip(s2.chars()) { let d1 = c1.to_digit(10).unwrap() as usize; let d2 = c2.to_digit(10).unwrap() as usize; c = 10 * c + (d1 + d2) % 10; } c }