Cod sursa(job #420092)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 18 martie 2010 14:48:45
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<cstdio>
#define infi 1<<30
using namespace std;
long long n, rez;

inline long long qont(long long x)
{
    long long tmp,nr5=5,rez=0;
    tmp=x/nr5;
    while(nr5<=x)
    {
        rez+=tmp;
        nr5*=5;
        tmp=x/nr5;
    }
    return rez;
}

void cauta(long long st, long long dr)
{
    long long mij=(st+dr)/2;
    long long q0=qont(mij);
    if(q0==n)//daca e bun
    {
        rez=mij;
        while(rez%5>0)
            rez--;
        return;
    }
    else if(st==dr)// daca nu am sol
    {
        rez=-1;
        return;
    }
    else if(q0<n)
        cauta(mij+1, dr);
    else if(q0>n)
        cauta(st, mij-1);

}

int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    fin>>n;
    long long st=1, dr=infi;
    cauta(st, dr);
    fout<<rez;
    return 0;
}