Cod sursa(job #546605)

Utilizator alia_deiCristina Sirbu alia_dei Data 5 martie 2011 10:20:53
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include<iostream.h>
#include<fstream.h>
unsigned long long l=0;
ofstream g;

/*int dei(unsigned long long s, unsigned long long d, unsigned long long a)
{
	unsigned long long mij;
	if (d<s) return 0;
	else
	{
		mij=(s+d)/2;
		if (mij%5==0)
		{
			unsigned long long aux=mij;
			while (aux%5==0)
			{
				l++;
				aux/=5;
			}
			if (l==a) g<<mij;
		//	else g<<"-1";
		}
		
		return dei(s,mij-1,a)+	dei(mij+1,d,a);
		
	}
	
	st=0;
dr=1000000000;
n=1;
if(p>0){
while(n){  c=(st+dr)/2;
              nrz=numarzerouri(c);
              if(nrz==p&&st==dr) {n=st;break;} 
              if(dr<st) {n=-1;break;} 
    	      if(p>nrz) st=c+1;
   	  	 else dr=c-1;     
	g.close();
}*/

long long numarzerouri(long long c)
{
	int l=0;
	while (c!=0)
	{
		c=c/5;
		l=l+c;
	}
	return l;
}

int main()
{
	
	ifstream f;
	f.open("fact.in");
	unsigned long long p;
	f>>p;
	
	long long st=0;
long long dr=1000000000;
long long c;
long long n=1;
long long nrz;
if(p>0){
while(n){  c=(st+dr)/2;
              nrz=numarzerouri(c);
              if(nrz==p&&st==dr) {n=st;break;} 
              if(dr<st) {n=-1;break;} 
    	      if(p>nrz) st=c+1;
   	  	 else dr=c-1;     
	
}
}
	g.open("fact.out");
	//if (p==0) g<<"1";
//	dei(1,p*5,p);
	if (p==0) g<<"1";
	if (n!=p) g<<n;
	else if (n==p) g<<n;
	f.close();
	g.close();
	
	return 0;
}