Cod sursa(job #2473946)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 14 octombrie 2019 15:24:52
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;


long long zerouri_factorial(long long N)
{
    long long putere_cinci = 5;
    long long numar_zerouri = 0;

    while(N >= putere_cinci)
    {
        numar_zerouri = numar_zerouri + N / putere_cinci;
        putere_cinci = 5 * putere_cinci;
    }

    return numar_zerouri;
}


long long cauta_binar(long long P)
{
    long long primul = 1, ultimul = 9000000000000;

    while(primul <= ultimul)
    {
        long long mijloc = (primul + ultimul) / 2;

        long long zerouri_mijloc = zerouri_factorial(mijloc);

        if(zerouri_mijloc == P && zerouri_factorial(mijloc - 1) < P) return mijloc;

        if(zerouri_mijloc >= P) ultimul = mijloc - 1;
        else primul = mijloc + 1;
    }

    return -1;
}


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

   long long P;

   fin >> P;

   if(P == 0) fout << 1;
   else fout << cauta_binar(P);

}