const TABLE: [[u32; 1000]; 1000] = { let mut table = [[0u32; 1000]; 1000]; let mut x = 0; while x < 1000 { let mut y = 0; while y < 1000 { table[x as usize][y as usize] = (x % 10 + y % 10) % 10 + (x / 10 % 10 + y / 10 % 10) % 10 * 10 + (x / 100 + y / 100) % 10 * 100; y += 1; } x += 1; } table }; fn add(x: u32, y: u32) -> u32 { TABLE[x as usize % 1000][y as usize % 1000] + TABLE[x as usize / 1000][y as usize / 1000] * 1000 } fn main() { proconio::input!(A: [u32; 6]); let mut visited = vec![false; 1000000]; let mut stack = vec![]; for &a in &A { if !visited[a as usize] { visited[a as usize] = true; stack.push(a); } } while let Some(u) = stack.pop() { for &a in &A { let v = add(u, a); if !visited[v as usize] { visited[v as usize] = true; stack.push(v); } } } let count = (0 .. 1000000).filter(|&i| visited[i] ).count(); println!("{count}"); }