Cod sursa(job #1417278)

Utilizator ArkinyStoica Alex Arkiny Data 9 aprilie 2015 23:45:02
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<iostream>
using namespace std;

ifstream in("fact.in");
ofstream out("fact.out");


int inline sum(int n)
{
	return n/4;
}

int fact(int p)
{
	if(p==0)
		return 1;
	else if(p==1)
		return 5;
	else if(p==2)
		return 10;
	else
	{
		int f=(1<<30);
		int st=11;
		int mij;
		int nr=(1<<30);
		int pr=0;
		while(st<=f)
		{
		   mij=(st+f)/2;
		   for(int k=5;mij/k!=0;k*=5)
			   pr+=mij/k;
		   if(pr==p)
		   {
			  nr= min(mij,nr);
			  f=mij-1;
		   }
		   else if(pr<p)
		   {
			   st=mij+1;
		   }
		   else
		       f=mij-1;
		   pr=0;
		}
		if(nr!=(1<<30))
			return nr;
		else
		  return -1;
	}
}
int main()
{
	int p;
	in>>p;
	out<<fact(p);

	return 0;
}