Cod sursa(job #84943)

Utilizator principeleMatei Constantin principele Data 18 septembrie 2007 19:39:43
Problema Factorial Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>

long fact(long n)
{
	long k=0;
	long x=5;
	while(x<=n)
	{
		k+=n/x;
		x*=5;
	}
	return k;
}

int main ()
{
	FILE *in = fopen ("fact.in","rt");
	FILE *out = fopen ("fact.out","wt");
	
	long Nmax;
	long P;
	
	fscanf (in,"%d",&P);
	
	long st=1,dr=P*100;
	long ok=0;
	long c;
	while (st!=dr)
	{
		c=(st+dr)/2;
		long fc=fact(c);
		if(fc!=P)
		{
			if(fc<P)
			{
				st=c+1;
			}
			else
			{
				dr=c-1;
			}
		}
		else
		{
			ok=1;
			break;
		}
	}
	
	if(ok)
	{
		fprintf(out,"%d",c-c%5);
	}
	else
	{
		fprintf(out,"%d",-1);
	}
	
	fclose(in);
	fclose(out);
	
	return 0;
}