Cod sursa(job #1268687)

Utilizator fhandreiAndrei Hareza fhandrei Data 21 noiembrie 2014 12:05:02
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
//Include
#include <fstream>
using namespace std;
 
//Functii
void bs(int left, int right);
int f(int n);
 
//Variabile
ifstream in("fact.in");
ofstream out("fact.out");
 
int p;
int n;
 
//Main
int main()
{
    in >> p;
    if(!p)
    {
        out << 1;
        in.close();
        out.close();
        return 0;
    }
    bs(1, (int)1e9);
     
    n -= n % 5;
    if(!n)
        out << -1;
    else
        out << n;
     
    in.close();
    out.close();
    return 0;
}
 
void bs(int left, int right)
{
    int mijl = (left + right) / 2;
    int nr0 = f(mijl);
    if(nr0 == p)
        n = mijl;
    else if(left != right)
    {
        if(nr0 > p)
            bs(left, mijl-1);
        else
            bs(mijl+1, right);
    }
}
 
int f(int n)
{
    int x=0,p=5;
    while(n/p!=0)
    {
        x+=n/p;
        p*=5;
    }
    return x;
}