Cod sursa(job #291859)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 30 martie 2009 14:57:03
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>

#define FIN "fact.in"
#define FOUT "fact.out"

#define N 35
#define MAX 100000000

int v[N][2], p, sum;

void read()
{
	freopen(FIN,"r",stdin);
	scanf("%d",&p);
}

int calc()
{
	int i = 1, j = 5, k = 1;
	while (v[i - 1][0] < MAX)
	{
		v[i][0] = k;
		v[i][1] = j;
		++i;
		j *= 5;
		k = k * 5 + 1;
	}
	return i - 1;
}

int solve(int p)
{
	int r = p, i, sum = 0;

	if (p == 0)
		return 1;

	i = calc();

	while (r)
	{
		while (v[i][0] > r)
			--i;
		sum += (r / v[i][0]) * v[i][1];
		r %= v[i][0];
	}

	return sum;
}

void write()
{
    int r1,r2;

	freopen(FOUT,"w",stdout);

	r1 = solve(p);

	r2 = solve(p + 1);

	if(r1 == r2)
		sum =- 1;
	else
		sum = r1;
	printf("%d\n", sum);
}

int main()
{
	read();

	write();
}