Cod sursa(job #417421)

Utilizator drywaterLazar Vlad drywater Data 14 martie 2010 13:31:01
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
FILE *f=fopen("fact.in","r"),*g=fopen("fact.out","w");
long int p,i,k;
long long v[15]={0,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125};
long long v2[15]={0,1,6,31,156,781,3906,19531,97656,488281,2441406,12207031,61035156,305175781};
int main(void)
{
	i=1;
	fscanf(f,"%ld",&p);
	if (p!=0)
	{
	while (v2[i]<=p) i++;
	i--;
	if (p==v2[i+1]-1 && i>=1) p=-1;
	p=p-v2[i];
	k=k+v[i];
	while (p>0)
	{
		while (p-v2[i]>=0)
		{
			p=p-v2[i];
			k=k+v[i];
		}
		i--;
		if (p==v2[i+1]-1 && i>=1) p=-1;}
	}
	else k=1;
	if (p==0)
		fprintf(g,"%ld",k);
	else fprintf(g,"-1");
	fclose(g);
	return 0;
}