Cod sursa(job #522215)

Utilizator netedu_andreiFII Andrei Netedu netedu_andrei Data 14 ianuarie 2011 16:08:53
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>

FILE *f,*g;

long long p ;
long long nrz( long long m)
{
	long long p5;
	long long s;
	p5 = 5;
	s = 0;
	while ( m / p5 > 0 )
	{
		s += m / p5;
		p5 *= 5;
	}
	return s;
}
long long by( long long st, long long dr)
{
	long long m;
	while( st < dr )
	{
		m = ( dr + st ) / 2;
		long long x = nrz(m);
		
		if (x == p)
		{	
			m -= m % 5;
			return m;
		}
		else if (p > x ) st = m+1;
		else if (p < x ) dr = m-1;
	}
	return -1;
}

int main()
{
	f = fopen("fact.in", "r");
	g = fopen("fact.out", "w");
	fscanf(f, "%lld", &p);
	if(p == 0) fprintf(g, "1\n"); 
	else fprintf(g, "%lld\n", by( 1, 400000016));
	return 0;
}