Cod sursa(job #383941)

Utilizator wallyMocanu Valentin wally Data 18 ianuarie 2010 20:03:22
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.26 kb
#include<fstream.h>

int main ()
{
	long i,p,c, x=-1, ok=0, k=0;
	ifstream f ("fact.in");
	ofstream g ("fact.out");
	f>>p;
	if (p==0)
	{
		g<<1; 
		ok=1;
	}
	else
	if (p<5 && p>0)
	{
		g<<p*5;
		ok=1;
	}
	else 
		for(i=1; i<=p && ok==0; i++)
		{
			x=x+6;
			if (p==x)
			{
				g<<-1;
				ok=1;
			}
			if (i%78125==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;         //3
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //4
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //5
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //6
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //7
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%15625==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;         //3
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //4
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //5
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //6
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%3125==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;         //3
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //4
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //5
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%625==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;         //3
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;          //4
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%125==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;         //3
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%25==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
				x++;           //2
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
			if (i%5==0)
			{
				x++;            //1
				if (p==x)
			    {
				    g<<-1;
					ok=1;
				}
			}
		}
		if (ok==0)
		{
			c=p;
			for (i=p; i>=1 && c==p; i--)
			{
				k=k+1;
				if (i%5==0)
					c=c-(k+1);
			}
			for (i=1; i<=c; i++)
			{
				if (i%78125==0)
					p=p-7;
				if (i%15625==0)
					p=p-6;
                if (i%3125==0)
					p=p-5;
				if (i%625==0)
					p=p-4;
				if (i%125==0)
					p=p-3;
				if (i%25==0)
					p=p-2;
				if (i%5==0)
					p=p-1;
			}
		    g<<p*5;
		}
	f.close ();
	g.close ();
	return 0;
}