Cod sursa(job #1496759)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 5 octombrie 2015 16:03:33
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <algorithm>
#define NMAX 1000000000
#include <fstream>

using namespace std;

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

long long int nr_10(long long int x)
{
    long long int nr_5 = 0;
    for(long long int i=5;i<=x;i*=5)
        nr_5+=x/i;
    long long int nr_2 = x/2;
    return min(nr_2,nr_5);
}

long long int cautare_binara(long long int x,long long int y, long long int nr)
{
    if(x<=y)
    {
        long long int m = (x+y)/2;
        if((nr_10(m)==nr) && (nr_10(m-1)<nr))
            return m;
        else
        {
            if(nr_10(m)>=nr)
              return  cautare_binara(x,m,nr);
            else
               return cautare_binara(m+1,y,nr);
        }
    }
    return -1;
}

int main()
{
        long long int p;
    in>>p;
    in.close();
    if(!p)
        out<<1<<'\n';
    else
    out<<cautare_binara(1,NMAX,p)<<'\n';
    return 0;
}