use std::io::Read; fn solve(t_data: Vec>) { t_data.iter().for_each(|t| { if t[1] == 1 { println!("{}", t[0]-1); } else { let mut count: u32 = 0; let mut res = t[0] - 1; loop { let nodes: u64 = t[1].pow(count+1); if res == 0 { break; } else if res < nodes { count += 1; break; } else { res -= nodes; count += 1; } } println!("{}", count); } }); } fn main() { let mut all_data = String::new(); std::io::stdin().read_to_string(&mut all_data).ok(); let all_data: Vec<&str> = all_data.trim().split('\n').map(|line| line.trim()).collect(); let q = all_data.iter().next().unwrap().parse().unwrap(); let t_data: Vec> = all_data.iter().skip(1).take(q) .map(|line| line.split_whitespace().map(|w| w.parse::().unwrap()).collect()) .collect(); solve(t_data); }