Cod sursa(job #1664)

Utilizator raresjuniorSfirlogea Rares raresjunior Data 14 decembrie 2006 13:18:14
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>
#include<math.h>

unsigned long p;

FILE *f=fopen("fact.in","r"),*g=fopen("fact.out","w");

unsigned long zero(unsigned long n)
{
unsigned long k,kmax,nr=0;
kmax=log10(n)/log10(5);
for(k=1;k<=kmax;k++)
        nr+=n/pow(5,k);
return nr;
}

unsigned long cauta(unsigned long a,unsigned long b)
{
unsigned long c,rez;
if(b-a>1)
        c=(a+b)/2;
        else
        {
        rez=zero(a);
        if(rez==p)
                {
                c=a/5;
                return c*5;
                }
                else
                {
                rez=zero(b);
                if(rez==p)
                        {
                        c=b/5;
                        return c*5;
                        }
                        else
                        return -1;
                }
        }
rez=zero(c);
if(rez>p)
        return cauta(a,c);
        else
        {
        if(rez<p)
                return cauta(c,b);
                else
                        {
                        c/=5;
                        return c*5;
                        }
        }
}

int main()
{
fscanf(f,"%ld",&p);
fclose(f);
if(p==0)
        fprintf(g,"1");
        else
        fprintf(g,"%ld",cauta(0,4294967295));
fclose(g);
return 0;
}