Cod sursa(job #139791)

Utilizator Gulyan89Gulyan Gulyan89 Data 20 februarie 2008 17:48:56
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream>
#include<iostream>
#include<math.h>
using namespace std;

long fact(unsigned long a)
{
	long s = 0;
	long n = log(a)/log(5);
	for(long k=1;k<=n;k++)s += n/pow(5, k);
	return s;
}

int main()
{
ifstream f1("fact.in");
ofstream f2("fact.out");
register unsigned long n, s, d, m, nr;
f1>>n;

if(n==0){f2<<1;f2.close();return 0;}
s = 0;
d = 2000000000;

while(s<d)
{
	m = (s+d)/2;
	nr = fact(m);
	if(n>nr)s=m+1;
	else if(n<nr)d=m-1;
	else if(nr==n)break;
}
if(m!=nr)m=-1;
f2<<m;
cout<<m;
f1.close();
f2.close();
return 0;}