Cod sursa(job #18783)

Utilizator xdanxDaN xdanx Data 18 februarie 2007 14:04:55
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#define N 100000000
int put[200],nr[200],n;
void init()
{
	put[0]=1;
	nr[0]=0;
	for(n=1;nr[n-1]<=N;n++)
	{
		nr[n]=put[n-1]+nr[n-1];
		put[n]=put[n-1]*5;
	}
}
int caut(int x)
{
	for (int i=0;i<n;i++)
		if(nr[i]<=x&&nr[i+1]>x)
			return i;
	return -1;
}

int rez(int p)
{
	int r=0,i;
	while(p)
	{
		i=caut(p);
		r=r+p/nr[i]*put[i];
		p=p%nr[i];
	}
	return r;
}
int main()
{
	int p,dan;
	init();
	//nt put[20]; nr[20];
	FILE *in=fopen("fact.in","r");
	fscanf(in,"%d",&p);
	dan=rez(p);
	FILE *out=fopen("fact.out","w");
	if (dan==rez(p+1)) fprintf(out,"-1\n");
		else fprintf(out,"%d\n",dan);
	fclose(in);
		fclose(out);
	return 0;
}