Cod sursa(job #1518919)

Utilizator cristiancCristian cristianc Data 6 noiembrie 2015 16:05:11
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;
int main()
{
	ifstream ii("fact.in");
	ofstream oo("fact.out");
	unsigned i, p, n, z, l;  ii >> p;
	if (p < 0)
	{
		oo << -1; return 0;
	}
	if (p == 0)
	{
		oo << 1;  return 0;
	}
	for (l = i = 1; i*5 + 1 <= p; l++)
		i = i*5 + 1;
	unsigned zero[l + 1], put[l + 1];  zero[1] = 1;  put[1] = 5;
	for (i = 2; i <= l; i++)
		zero[i] = 5*zero[i - 1] + 1, put[i] = put[i-1] * 5;
	unsigned short ture = 0;
	for (unsigned nr = 0, n = 0, i = l; i; i--, ture = 0)
	{
		while (nr + zero[i] <= p && ture < 5)
			nr += zero[i], n += put[i], ture++;
		if (ture == 5)
		{
			oo << -1;  return 0;
		}
		if (nr == p)
		{
			oo << n;  return 0;
		}
		if (nr < p && i == 1)
		{
			oo << -1;  return 0;
		}
	}
}