Cod sursa(job #1115547)

Utilizator radunecNecula Radu radunec Data 21 februarie 2014 21:39:07
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int main()
{
    int p,n,nrz , putere;
    fin>>p;
    if(p==0)
    {
        fout<<1;
        return 0;
    }

    int st = 5 , dr = 2000000000;
    bool gasit = false;
    while(st < dr)
    {
        n = (st+dr)/2;
        nrz = 0;
        putere = 5;
        while(n/putere>0)
        {
            nrz+=n/putere;
            putere *= 5;
        }
        if(nrz == p)
        {
            while(n%5 != 0)
                n --;
            fout << n;
            gasit = true;
            break;
        }
        else
            if(nrz < p)
                st = n + 1;
            else
                dr = n - 1;
    }

    if(! gasit)
        fout<<-1;
    return 0;
}