Cod sursa(job #942089)

Utilizator ShadoWolfCodrut Constantin Gusoi ShadoWolf Data 20 aprilie 2013 18:46:50
Problema Factorial Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;
 
long fact(long a);
 
int main()
{
    long a;
    ifstream in("fact.in");
    in>>a;
    in.close();
    ofstream out("fact.out");
    out<<fact(a)<<"\n";
    out.close();
    return 0;
}
 
 
long fact(long a)
{  
	int sum=0;
    if (a==0) return 1;
	const int MAX=1000001;
	int v[MAX]={};
	for (int i=1;i<MAX;++i)
	{
		v[i]=1;
	}
	for (int i=5;i<MAX;i+=5)
	{
		v[i]+=1;
	}
	for (int i=25;i<MAX;i+=25)
	{
		v[i]+=1;
	}
	for (int i=125;i<MAX;i+=125)
	{
		v[i]+=1;
	}
	for (int i=625;i<MAX;i+=625)
	{
		v[i]+=1;
	}
	for (int i=3125;i<MAX;i+=3125)
	{
		v[i]+=1;
	}
	for (int i=15625;i<MAX;i+=15625)
	{
		v[i]+=1;
	}
	for (int i=78125;i<MAX;i+=78125)
	{
		v[i]+=1;
	}
	for (int i=390625;i<MAX;i+=390625)
	{
		v[i]+=1;
	}
	int ind=0;
	while(ind<MAX)
	{
		ind++;
		sum+=v[ind];
		if (sum==a)
		{
			return ind*5;
		}
		else if(sum>a)
		{
			return -1;
		}
	}
	return -1;
}