// yukicoder My Practice // author: Leonardone @ NEETSDKASU use std::io; fn get_line() -> String { let mut input = String::new(); io::stdin().read_line(&mut input).ok().expect(""); return String::from(input.trim()); } fn get_words() -> Vec { let mut v: Vec = vec![]; let input = get_line(); for c in input.split_whitespace() { v.push(String::from(c)); } return v; } fn get_integers() -> Vec { let v = get_words(); return v.iter() .map(|x| x.parse::().ok().expect("")) .collect(); } fn is_kadomatsuretsu(a1 :i32, a2: i32, a3: i32) -> bool { a1 != a3 && ((a2 > a1 && a2 > a3) || (a2 < a1 && a2 < a3)) } fn main() { let inputs = get_integers(); let a1 = inputs[0]; let a2 = inputs[1]; let a3 = inputs[2]; if is_kadomatsuretsu(a1, a2, a3) { println!("INF"); std::process::exit(0) } let max = std::cmp::max(std::cmp::max(a1, a2), a3); let mut ans = 0; for p in 1 .. max { if is_kadomatsuretsu(a1 % p, a2 % p, a3 % p) { ans += 1 } } println!("{}", ans); }