Cod sursa(job #222919)

Utilizator mottyMatei-Dan Epure motty Data 26 noiembrie 2008 10:29:33
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#define MAX 100000000
int a[20],b[20];
void precalcul()
{
	a[1]=5;
	b[1]=1;
	for(int i=2;b[i-1]<=MAX;++i)
	{
		a[i]=5*a[i-1];
		b[i]=a[i-1]+b[i-1];
	}
}
int caut(int n)
{
	int i=1;
	while(b[i]<=n)
		++i;
	return i-1;
}
int calcul(int p)
{
	int s=0,poz=0;
	while(p)
	{
		poz=caut(p);
		s+=p/b[poz]*a[poz];
		p%=b[poz];
	}
	return s;
}
int main()
{
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	int p=0,zero=0,unu;
	precalcul();
	scanf("%d",&p);
	if(p==0)
	{
		printf("1");
		return 0;
	}
	zero=calcul(p);
	unu=calcul(p+1);
	if(zero==unu)
		printf("-1");
	else
		printf("%d",zero);
	return 0;
}