use std::collections::HashMap; use proconio::input; fn main() { input! { n: usize, } let mut memo = HashMap::new(); memo.insert(1, Some(String::new())); rec(n, &mut memo); let ans = memo[&n].clone().unwrap(); println!("{}", ans); } fn rec(n: usize, memo: &mut HashMap>) { if memo.contains_key(&n) { return; } if n % 2 == 1 { let prev = n / 2; rec(prev, memo); if let Some(mut seq) = memo[&prev].clone() { seq.push('A'); memo.insert(n, Some(seq)); return; } } if n % 3 == 1 { let prev = n / 3; rec(prev, memo); if let Some(mut seq) = memo[&prev].clone() { seq.push('B'); memo.insert(n, Some(seq)); return; } } memo.insert(n, None); }