Cod sursa(job #2619509)

Utilizator ADRIAN.CATRINOIUAdrian Catrinoiu ADRIAN.CATRINOIU Data 27 mai 2020 20:29:22
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
//functie care verifica daca numarul are n zero-uri
bool verificare(int p, int n)
{
    int temp = p, count = 0, f = 5;
    while (f <= temp)
    {
        count += temp/f;
        f = f*5;
    }
    return (count >= n);
}
//functie care returneaza numarul cel mai mic, al carui factorial are n zero-uri
int returneazaNumarFactorial(int n)
{
    int inceput=0,sfarsit=5*n;
    //cautare binara
    while(inceput<sfarsit)
    {
        int mijloc=(inceput+sfarsit)/2;
        //verificam daca mijlocul contine n zero-uri

        if(verificare(mijloc,n))
            sfarsit=mijloc;
        else
            inceput=mijloc+1;
    }
    if(verificare(inceput,n))
        return inceput;
    return -1;
}
int main()
{
    int p,x;
    fin>>p;
    if(p==0)
        fout<<1;
    else
        if(p==1)
            fout<<5;
    else
    {

        fout<<returneazaNumarFactorial(p);
    }
    return 0;
}