Cod sursa(job #120478)

Utilizator slayer4uVictor Popescu slayer4u Data 5 ianuarie 2008 16:12:24
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#include <math.h>

long p, n, m, j, k, l, i, a, s, x[20], y[20];

long pal(long s)
{
	p = 0;
	while (s >= y[p])
		p ++;
	p --;

	return (s / y[p]);
}

long ver(long n)
{
	long i, s;
	a = 1;
	s = 0;
	while (n)
	{
		a = pal(n);
		s += a * x[p];
		n = n - y[p] * a;
	}
	return s;
}

int main()
{
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	
	scanf("%ld", &n);
	
	if (n == 0) 
	{
		printf("1\n"); 
		return 0;
	}

	y[0]=1;
	y[14]=1;
	for (i = 1; i <= 13; i ++)
	{
		x[i] = pow(5, i);
		y[i] = x[i - 1] + y[i - 1];
	}
	
	k=ver(n);
	l=ver(n+1);

	if (k==l) 
		printf("-1\n"); 
	else
		printf("%ld\n",k);

	return 0;
}