#[allow(unused_macros)] macro_rules! input { ( $($t:ty),* ) => {{ let mut s = String::new(); std::io::stdin().read_line(&mut s); let mut splits = s.trim().split_whitespace(); ($( { splits.next().unwrap().parse::<$t>().unwrap() },)*) }} } #[allow(dead_code)] pub fn gcd(n: u64, m: u64) -> u64 { match (n, m) { (0, 0) => return 0, (0, _) => return 0, (_, 0) => return 0, (n, m) => { let r = n % m; if r == 0 { m } else { gcd(m, r) } } } } #[allow(unused_must_use)] #[allow(unused_variables)] fn solve() { let (t, a, b) = input!(u64, u64, u64); let t = t - 1; let a_count = t / a + 1; let b_count = t / b + 1; let same_time = t / (a * b / gcd(a, b)) + 1; println!("{}", a_count + b_count - same_time); } fn main() { solve(); }