Cod sursa(job #446536)

Utilizator om6gaLungu Adrian om6ga Data 26 aprilie 2010 07:19:23
Problema Factorial Scor 85
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <math.h>
int p;

int nrcinci(long long n)
{
    int rez=0,i;   
    for (i=1;i<=14;i++)
        rez+=n/pow(5,i);
    return rez;
}

int cauta(long long n1,long long n2)
{
     if (n1==n2)
     {
        if (nrcinci(n1)==p)
           return n1;  
        else
            return -1;      
     }
    long long aux=(n1+n2)/2;
    if (nrcinci(aux)==p)
       return aux;
    else if (nrcinci(aux)<p)
       return cauta(aux+1,n2);
    else return cauta(n1,aux); 
}



int main()
{
    FILE *in,*out;
    in=fopen("fact.in","r");
    out=fopen("fact.out","w");
    fscanf(in,"%d",&p);
    int n=floor(log(4*p+1)/log(5));
    long long N1=pow(5,n);                     // <5^13
    long long N2=pow(5,n+1);
    long long rez=cauta(0,N2);
    while (nrcinci(rez)==p)
          rez--;
    rez++;
    fprintf(out,"%lld",rez);
    return 0;
}