Cod sursa(job #2918505)

Utilizator alex_danielManea Daniel Alexandru alex_daniel Data 11 august 2022 17:36:52
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
using namespace std;

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

int findTrailingZeros(int n)
{
    int cnt =  0;

    for (int i = 5;  n/i>=1; i*=5)
        cnt  += n/i;

    return cnt;
}

int fact(int p)
{
    if (p==0)
        return 1;
    int a =  0,  b = 1000000000; int ok = 0; int mij; int mid;
    while (a<=b && !ok)
    {
        mij = (a+b)/2;
        mid = findTrailingZeros(mij);
        if (mid == p)
            ok = 1;
        else if (mid < p)
            a = (a+b)/2 + 1;
        else
            b =  (a+b)/2 - 1;
    }

    if (ok)
    {
        do{
            --mij;
           mid = findTrailingZeros(mij);
        }while (mid!=p-1);
        return mij+1;
    }

    return -1;

}

int main()
{
    int p;
    fin >> p;
    fout << fact(p);

    return 0;
}