Cod sursa(job #668842)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 25 ianuarie 2012 19:34:21
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#include<iostream>
using namespace std;
long long fact(long long x)
{
	long long nr,i,j;
	if(x==0)
		return 1;
	nr=x/5;
	j=1;
	for(i=25;i<=x;i=i*5,j++) 
		nr=nr+x/i;
	return nr;
}
int main ()
{
	long long p,q,mij,c,a,n;
	ifstream f("fact.in");
	ofstream g("fact.out");
	f>>n;
	f.close();
	p=1;
	q=2000000000;
	a=0;
	while(p<=q) {
		mij=(p+q)/2;
		c=fact(mij);
		if(c<n)
			p=mij+1;
		else if(c>n) 
			q=mij-1;
		else {
			a=1;
			break;
		}
	}
	if(a==0)
		g<<"-1";
	else {
		while(mij%5!=0)
			mij--;
		if((mij==0)&&(n!=1))
			g<<mij+1;
		else g<<mij;
	}
	g.close();
	return 0;
}