Cod sursa(job #1460254)

Utilizator om6gaLungu Adrian om6ga Data 12 iulie 2015 01:02:38
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <math.h>
int p;

int nrcinci(long long n)
{
    int rez=0,i;
    for (i=1;i<=25;i++)
        rez+=n/(long long)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);
    long long N2=pow(5,n+1);
    long long rez=cauta(0,N2);
    int cc=0;
    while (nrcinci(rez)==p)
    {
          rez--;
          cc++;
    }
    if (cc>0)
       rez++;
    if (p==0)
       rez=0;
    if (p==1)
       rez=5;
    fprintf(out,"%lld",rez);
    return 0;
}