Cod sursa(job #707283)

Utilizator vandrei95Zamfir Vlad vandrei95 Data 5 martie 2012 20:59:14
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<iostream>
#include<fstream>
#include <stdio.h>
#include <math.h>
using namespace std;

int main(void)
{
	fstream f,g;
	f.open("fact.in",ios::in);
	g.open("fact.out",ios::out);
	int n=0,i,n2,adevarat=0,j,a;
	int putere5[20]={0},zero[20]={0};
	putere5[1]=5;
	for(i=2;i<=19;i++)
		putere5[i]=putere5[i-1]*5;
	zero[1]=1;
	for(i=2;i<=19;i++)
		zero[i]=putere5[i-1]+zero[i-1];
	long long p=1;
	f>>p;
	n2=p;
	i=12;
	while(p<zero[i])
		i--;
	
	for(j=1;j<=i-1;j++)
		if((p+j)%zero[i]==0)
		{
			g<<-1;
			return 0;
		}
	for(j=1;j<=i;j++)
		if((p+j)==zero[i+1])
		{
			g<<-1;
			return 0;
		}
	if(p==0)
		g<<1;
	else
	{
		for(i=19;i>=1;i--)
			if(p>=zero[i])
			{
				n+=p/zero[i]*putere5[i];
				p=p%zero[i];
				
			}
	/*	for(i=1;i<=15;i++)
			if(n==putere5[i])
			{
				adevarat=1;
				break;
			}
		if(adevarat)
			if(zero[i]==n2)
				g<<n;
			else
				g<<-1;
		else*/
	/*	if(n%25==0)	
			for(i=15;i>=2;i--)
				if(n%putere5[i]==0)
				{
					a=n/putere5[i];
					if(n2%a==0&&n2/a==zero[i])
						g<<n;
					else
						g<<-1;
					break;
				}
				else;
		else*/
		g<<n;
		
		
	}

}