Cod sursa(job #1218216)

Utilizator ZoranZomboratZoran Zomborat Goran ZoranZomborat Data 10 august 2014 00:01:01
Problema Factorial Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#define N_max 3000000
using namespace std;
unsigned long long a[N_max],n,p;
ifstream fin("fact.in");
ofstream fout("fact.out");
int search(unsigned long long val,unsigned long long min,unsigned long long max)
{
    unsigned long long mid=(min+max)/2;
    if(min==max&&val!=min)
        return -1;
    if(val==a[mid])
        return mid*5;
    else
        if(val>a[mid])
        return search(val,mid+1,max);
        else
        return search(val,min,mid-1);
}
int main()
{
    fin>>p;
    if(p==0)
    {
        fout<<1;
        return 0;
    }
    a[0]=0;
    n=1;
    while(n<N_max)
    {
        for(unsigned long long i=n;i<N_max;i+=n)
            a[i]++;
        n*=5;
    }
    for(unsigned long long i=2;i<N_max;i++)
    {
        a[i]+=a[i-1];
    }
    fout<<search(p,0,N_max);
    return 0;
}