Pagini recente » Cod sursa (job #2155278) | Cod sursa (job #2040600) | Cod sursa (job #3281570) | Cod sursa (job #880091) | Cod sursa (job #241674)
Cod sursa(job #241674)
#include <fstream.h>
#include <iostream.h>
#include <math.h>
unsigned long int p,crt,zerouri=0,i,k,x[14];
void calculeaza(unsigned long int nr)
{
int i=1; zerouri=0;
while(x[i]<=nr)
{ zerouri+=nr/x[i];
i++;
}
}
int main()
{ x[0]=1;
for(i=1;i<=13;i++)
x[i]=x[i-1]*5;
fstream f,g;
f.open("fact.in",ios::in);
f>>p;
f.close();
g.open("fact.out",ios::out);
if(p==0)
{ g<<"1"; return 0; }
crt=500000; int ok;
while(zerouri!=p)
{ zerouri=0;
calculeaza(crt);
if(zerouri>p)
crt=crt/2;
else
if(zerouri<p)
crt=crt+crt/2;
if(zerouri<p-12)
{
for(i=crt;i<=crt+60;i+=5)
{ calculeaza(i);
if(zerouri==p)
{crt=i;break; }
}
}
if(zerouri<p+12)
{
for(i=crt;i>=crt-60;i+=5)
{ calculeaza(i);
if(zerouri==p)
{crt=i; break; }
}
}
}
if(zerouri==p)
{
while(crt%5)
crt--;
g<<crt;
}
else
g<<-1;
g.close();
return 0;
}