Cod sursa(job #736475)

Utilizator OrionDicu Mihai George Orion Data 18 aprilie 2012 18:44:03
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <math.h>

FILE *fin=fopen("factorial.in","r");
FILE *fout=fopen("factorial.out","w");
int zero(int n);
int cautare(int st, int dr, int p);
int main()
{
    int p;
    fscanf(fin, "%d", &p);
    if (p==0)
        fprintf(fout, "1");
    else 
		{
			if (zero(cautare(4*p, 5*p, p))==p)
				fprintf(fout, "%d", cautare(4*p, 5*p, p));
			else
				fprintf(fout, "-1");
		}
    fclose(fin);
    fclose(fout);
    return 0;
}
int zero (int n)
{
    int i=1,nr=0;
    while(pow(5,i)<=n)
    {
        nr=nr+n/int(pow(5,i));
        i++;
    }
    return nr;
}
int cautare(int st, int dr, int p)
{
    int mij=(st+dr)/2;
    if (st==dr)
        return st;
    if (zero(mij)>=p)
        return cautare(st,mij,p);
    else
        return cautare(mij+1,dr,p);
}