Cod sursa(job #2612355)

Utilizator AlexnolifeAlexandru Ica Alexnolife Data 8 mai 2020 21:27:00
Problema Factorial Scor 0
Compilator rs Status done
Runda Arhiva de probleme Marime 0.73 kb
use std::cmp::Ordering::{Less, Equal, Greater};

fn count_zeroes(mut num: i32) -> i32 {
    let mut count = 0;

    while num > 0 {
        count += num / 5;
        num /= 5;
    }

    count
}

fn find_num(cnt: i32) -> i32 {
    let mut left = 1;
    let mut right = i32::MAX;

    while left < right {
        let mid = left + (right - left) / 2;
        let n = count_zeroes(mid);

        match n.cmp(&cnt) {
            Equal => return mid - mid % 5,
            Greater => right = mid - 1,
            Less => left = mid + 1
        }
    }

    -1
}

fn main() {
    let s = std::fs::read_to_string("fact.in").unwrap();
    let result = find_num(s.parse::<i32>().unwrap());
    std::fs::write("fact.out", result.to_string()).unwrap();
}