Cod sursa(job #408696)

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

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

int z(long long n)
{
	for(i=1;i<=12;i++)
		if(v[i].pt<=n && v[i+1].pt>=n)
		{
			t=v[i].zer-1;
			break;
		}
	n=n/5;
	t+=n;
	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;
	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;
}