Cod sursa(job #2758337)

Utilizator ste2021Stefan Stefan ste2021 Data 9 iunie 2021 21:18:41
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

//functie care verifica daca numarul are n zero-uri
int cifre(int n)
{
    int nr = 0;
    for (int i=5; n/i>=1; i*=5)
        nr += n / i;
    return nr;
}

int main()
{
    int p, ok = 0;
    f>>p;
    if(p == 0)
        g<<1;
    else
    {//aflam numarul cel mai mic, al carui factorial are n zero-uri
        int st = 0, dr = 1000000000;
        while(ok == 0 && st <= dr)
        {
            int mij=st+(dr-st)/2;
            int k = cifre(mij);

            //verificam daca mijlocul contine n zero-uri
            if(k == p)
            {
                g<<mij / 5 * 5;
                ok = 1;
            }
            else if(cifre(mij) > p)
                dr = mij - 1;
            else
                st = mij + 1;
        }
        if(ok == 0)
            g<<-1;
    }

    f.close();
    g.close();

    return 0;
}