Cod sursa(job #2836533)

Utilizator andreea_chivuAndreea Chivu andreea_chivu Data 20 ianuarie 2022 16:31:05
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

const int REZ_MAX=5e8;

using namespace std;

int nr5(int n){
    int s = 0;
    while(n >= 5){
        s += n/5;
        n/=5;
    }
    return s;
}

int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");

    int p;
    fin >> p;

    if(p == 0){
        fout << 1;
    }else{
        int st = 1, dr = REZ_MAX, rez = -1;
        while(st <= dr){
            int mij = (st + dr)/2;
            if(nr5(mij) >= p){
                rez = mij;
                dr = mij - 1;
            }else{
                st = mij + 1;
            }
        }
        if(rez == -1){
            fout << -1;
        }else if(nr5(rez) != p)
            fout << -1;
        else
            fout << rez;
    }

    fin.close();
    fout.close();
    return 0;
}