Cod sursa(job #493966)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 20 octombrie 2010 10:56:18
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#include<iostream>
using namespace std;

#define MAXN 0x5F5E100

typedef unsigned long uint32;

uint32 Decompose(uint32 n, const uint32 p)
{
	uint32 power=0;
	while(n)
	{
		n/=p;
		power+=n;
	}
	return power;
}

int main()
{
	uint32 p;
	fstream fin("fact.in", fstream::in);
	fstream fout("fact.out", fstream::out);
	
	fin>>p;
	//cout<<p<<endl;
	
	uint32 l=1,r=MAXN;
	long num=-1;
	while(l<=r)
	{
		const uint32 index=(l+r)>>1;
		const uint32 rez=Decompose(index,5);
		if(rez>p)
		{
			r=index-1;
		}
		else if(rez<p)
		{
			l=index+1;
		}
		else
		{
			r=index-1;
			num=index;
		}
	}
	
	fout<<num<<endl;
	
	fin.close();
	fout.close();
	return 0;
}