// 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 { get_line() .split_whitespace() .map(String::from) .collect() } fn get_integers() -> Vec { get_line() .split_whitespace() .map(|x| String::from(x).parse::().unwrap()) .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"); } else { let max = std::cmp::max(std::cmp::max(a1, a2), a3) + 1; let ans = (1 .. max) .filter(|p| is_kadomatsuretsu(a1 % p, a2 % p, a3 % p)) .count(); println!("{}", ans); } }