Cod sursa(job #476690)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 12 august 2010 01:40:32
Problema Factorial Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <fstream>


using namespace std;
int N;
long long P;




void proc()
{
	int S=0;
	int A[12]={1,6,31,156,781,3906,19531,97656,488281,2441406,12207031,61035156};
	int B[12]={5,25,125,625,3125,15625,78125,390625,1953125,9764625,48828125,244140625};
	int contor[12];
	memset(contor,0,sizeof(contor));
	while (P)
	{
		if(P>=A[11])
		{
			contor[11]++;
			S+=B[11];
			P-=A[11];
		}
		else if(P>=A[10])
		{
			contor[10]++;
			S+=B[10];
			P-=A[10];
		}
		
		else if(P>=A[9])
		{
			contor[9]++;
			S+=B[9];
			P-=A[9];
		}
		else if(P>=A[8])
		{
			contor[8]++;
			S+=B[8];
			P-=A[8];
		}
		else if(P>=A[7])
		{
			contor[7]++;
			S+=B[7];
			P-=A[7];
		}
		else if(P>=A[6])
		{
			contor[6]++;
			S+=B[6];
			P-=A[6];
		}
		else if(P>=A[5])
		{
			contor[5]++;
			S+=B[5];
			P-=A[5];
		}
		else if(P>=A[4])
		{
			contor[4]++;
			S+=B[4];
			P-=A[4];
		}
		else if(P>=A[3])
		{
			contor[3]++;
			S+=B[3];
			P-=A[3];
		}
		else if(P>=A[2])
		{
			contor[2]++;
			S+=B[2];
			P-=A[2];
		}
		else if(P>=A[1])
		{
			contor[1]++;
			S+=B[1];
			P-=A[1];
		}
		else if(P>=A[0])
		{
			contor[0]++;
			S+=B[0];
			P-=A[0];
		}
	}
	fstream fout("fact.out",ios::out);
	int ok=0;
	for(int i=0;i<=11;i++)
		if(contor[i]>4) ok++;
	if(!ok)
		fout<<S<<"\n";
	else
		fout<<"-1\n";
	
	fout.close();
}

int main(int argc,char *agv[])
{
	fstream fin("fact.in",ios::in);
	fin>>P;
	if(P)
		proc();
	else
	{
		fstream fout("fact.out",ios::out);
		fout<<"1\n";
		fout.close();
	}
	fin.close();
}