Cod sursa(job #12462)

Utilizator Ady.hAdrian Hada Ady.h Data 3 februarie 2007 22:59:52
Problema Factorial Scor 55
Compilator c Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#define MAX 400000015
inline int putere(int x)
{int i=2;
x=x/25;
while (x%5==0)
	{
	i++;
	x/=5;
	}
return i;
}

int main()
{FILE *pf;
pf=fopen("fact.in","r");
int p;
fscanf(pf,"%d",&p);
fclose(pf);
if (p==0) {
	pf=fopen("fact.out","w");
	fprintf(pf,"%d",1);
	fclose(pf);
	return 0;
	}
int n;
if (p<=10000000)
{
int numar=0;
for (n=5;numar<p;n+=5)
	if (n%25==0) numar+=putere(n);
		else numar++;
n-=5;
pf=fopen("fact.out","w");
if (numar==p) fprintf(pf,"%d",n);
	else fprintf(pf,"%d",-1);
fclose(pf);
}
else {int numar=100000000;
	for (n=MAX;numar>p;n-=5)
		if (n%25==0) numar-=putere(n);
			else numar--;
pf=fopen("fact.out","w");
if (numar==p) { if (n==MAX) fprintf(pf,"%d",n);
			else fprintf(pf,"%d",n);
			}
	else fprintf(pf,"%d",-1);
fclose(pf);
	}

return 0;
}