Cod sursa(job #2748997)

Utilizator Andrei_TudorAndrei Tudor Andrei_Tudor Data 4 mai 2021 15:29:49
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

long long f(int x){
    long long p = 5, k = 0;
    while(x / p > 0){
        k = k + x / p;
        p *= 5;
    }
    return k;
}

int main()
{
    ifstream cin("fact.in");
    ofstream cout("fact.out");
    long long p;
    cin >> p;
    if(p == 0){
        cout << 1;
    }
    else {
        int st = 1, dr = 5 * p, sol = -1;
        while(st <= dr){
            int med = (st + dr) / 2;
            if(f(med) < p){
                st = med + 1;
            }
            else if(f(med) >= p){
                dr = med - 1;
                sol = med;
            }
        }
        if(sol != -1 && f(sol) == p){
            cout << sol - sol % 5;
        }
        else {
            cout << -1;
        }
    }
    return 0;
}