Cod sursa(job #493970)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 20 octombrie 2010 11:33:20
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#include<iostream>
using namespace std;

#define MAXN 0xffffffffffffLL//0x5F5E101

typedef unsigned long long uint64;

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

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