Cod sursa(job #408761)

Utilizator RoswenRus Alexandru Roswen Data 3 martie 2010 10:54:03
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#define nmax 2000000000
FILE *f=fopen("factorial.in","r"), *g=fopen("factorial.out","w");
unsigned long long ls,ld,mij,i,t,p,zr;

struct nod
{
	long long pt, zer;
} v[15];

int z(long long n)
{
	int t=0;
	
	while(n)
	{
		t+=n/5;
		n/=5;
	}
	
	return t;
}

int main()
{
	fscanf(f, "%d", &p);
	v[0].pt=1;
	for(i=1;v[i-1].pt*5<=nmax;i++)
	{
		v[i].pt=v[i-1].pt*5;
		v[i].zer=i;
	}
	ls=0, ld=nmax*100;
	if(p==0) 
	{
		fprintf(g,"1");
		return 0;
	}
	while(ls<ld)
	{
		mij=(ls+ld)/2;
		zr=z(mij-(mij%5));
		if(zr==p)
		{
			fprintf(g, "%ld", mij-mij%5);
			return 0;			
		}
		else if(zr<p)
			ls=mij;
		else if(zr>p)
			ld=mij;
	}
	fprintf(g, "-1");
	return 0;
}