Cod sursa(job #305443)

Utilizator AplayLazar Laurentiu Aplay Data 17 aprilie 2009 13:46:07
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
#include<math.h>
FILE*f=fopen("fact.in","r");
long long p,i,a,b,c,ok,fn;

long long get(long long n)
{
	long long k=1,nrz=0;
	while(n>=pow(5,k))
	{
		nrz+=n/(int)pow(5,k);
		k++;
	}
	return nrz;
}

int main()
{
	fscanf(f,"%lld",&p);
	fclose(f);
	f=fopen("fact.out","w");
	if(!p) fprintf(f,"1");
	else 
	{
		a=0;
		b=10000000000LL;
		c=a+((b-a)/2);
		ok=0;
		while(a<b-1&&!ok)
		{
			fn=get(c);
			if(fn==p)
			{
				ok=1;
				i=c;
			}
			else 
				if(fn<p)
					a=c;
				else 
					b=c;
			c=a+((b-a)/2);
		}
		if(ok) fprintf(f,"%lld",i-i%5);
		else fprintf(f,"-1");
	}
	fclose(f);
	return 0;
}