Cod sursa(job #942115)

Utilizator ShadoWolfCodrut Constantin Gusoi ShadoWolf Data 20 aprilie 2013 20:12:33
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
 
long long fact(long long a,long long min=0,long long max=10000000000);
long long number(long long x);
int main()
{
    long long a;
    ifstream in("fact.in");
    in>>a;
    in.close();
    ofstream out("fact.out");
    out<<fact(a)<<"\n";
    out.close();
    return 0;
}
 
long long number(long long x)
{
	long long pow5=5;
	long long c=0;
	while(pow5<=x)
	{
		c+=x/pow5;
		pow5*=5;
	}
	return c;
}
 
long long fact(long long a,long long min,long long max)
{  
    if (a==0) return 1;
	if (min>max)
	{
		return -1;
	}
	long long mid=(max+min)/2;
	long long num=number(mid);
	if(a==num)
	{
		return mid-mid%5;
	}
	else if (a<num)
	{
		return fact(a,min,mid-1);
	}
	else
	{
		return fact(a,mid+1,max);
	}
}