Cod sursa(job #7881)
#include <fstream>
int main ()
{
long P,y,pres,presc=0,adaugat=0;
std::fstream f ("fact.in");
f>>P;
f.close();
pres=P*4;
presc+=pres/5;
presc+=pres/25;
presc+=pres/125;
presc+=pres/625;
presc+=pres/3125;
presc+=pres/15625;
presc+=pres/78125;
presc+=pres/390625;
presc+=pres/1953125;
presc+=pres/9765625;
presc+=pres/48828125;
presc+=pres/244140625;
presc+=pres/1220703125;
if (presc<P)
{
while (pres%5!=0)
{
pres+=1;
adaugat=1;
}
if (adaugat)
{
y=pres;
while ((y%5==0) && (y>0))
{
presc++;
y/=5;
}
}
while (presc<P)
{
y=pres;
while ((y%5==0) && (y>0))
{
y=y/5;
presc++;
}
pres+=5;
}
}
else
{
while (pres%5!=0)
{
pres-=1;
adaugat=1;
}
if (adaugat)
presc++;
while (presc>P)
{
y=pres;
while ((y%5==0) && (y>0))
{
y=y/5;
presc--;
}
pres-=5;
}
}
std::ofstream g ("fact.out");
if (presc==P)
g<<pres;
else
g<<-1;
g.close();
return 0;
}