Cod sursa(job #218204)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 1 noiembrie 2008 09:09:42
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#define N 100000005
int nr5[20], pr5[20];
void precalcul()
{
	pr5[1]=5;
	nr5[1]=1;
	for (int i=2; nr5[i-1]<=N; i++)
	{
		pr5[i]=5*pr5[i-1];
	    nr5[i]=pr5[i-1]+nr5[i-1];
	}
}

int indice(int s)
{
	int i;
	for (i=1; i<20; i++)
	{
		if (nr5[i]<=s && nr5[i+1]>s)
			return i;
	}
	return 0;
}

int calcul(int s)
{
	int rez=0,i;
	while(s)
	{
		i=indice(s);
		rez+=s/nr5[i]*pr5[i];
		s=s%nr5[i];
	}
	return rez;
}

int main()
{
	int k;
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	precalcul();
	scanf("%d",&k);
	int r1=calcul(k),r2=calcul(k+1);
	if(r1==r2)
		printf("-1\n");
	else
		printf("%d\n",r1);
	return 0;
}