Pagini recente » Cod sursa (job #3238966) | Cod sursa (job #2467258) | Cod sursa (job #2479589) | Cod sursa (job #2901068) | Cod sursa (job #379838)
Cod sursa(job #379838)
#include <iostream.h>
#include <math.h>
#include <fstream.h>
int factorial(unsigned long int n)
{
int i=0;
unsigned long int nr=0;
while(pow(5,i)<n)
i++;
for(int k=1;k<=i;k++)
nr+=n/pow(5,k);
return nr;
}
void binar(unsigned long int k,unsigned long int j,unsigned long int nr)
{
unsigned long int min;
fstream g("fact.out",ios::out);
int ok=0,q=0;
unsigned long int cautat=0;
while(k<=j&&ok==0)
{
cautat=(k+j)/2;
if(factorial(cautat)==nr)
ok=1;
else
if(factorial(cautat)>nr)
j=cautat-1;
else
k=cautat+1;
}
if(ok==1)
{min=cautat-4;
for(unsigned long int i=cautat-4;i<=cautat+4;i++)
if(i<min&&factorial(i)==nr)
min=i;
g<<min;
}
if(ok==0)
g<<-1;
}
int main()
{
unsigned long int nr,k,j;
fstream f("fact.in",ios::in);
fstream g("fact.out",ios::out);
f>>nr;
k=nr*4;
j=nr*5;
if(nr==1)
g<<5;
else
binar(k,j,nr);
return 0;
}