Pagini recente » Cod sursa (job #1542572) | Cod sursa (job #1445140) | Cod sursa (job #2415401) | Cod sursa (job #429571) | Cod sursa (job #1741651)
#include <fstream>
using namespace std;
ifstream fi("fact.in");
ofstream fo("fact.out");
int Z;
int st,dr,p2,p5,m,nrz;
int f(int n, int p)
// returneaza puterea la care apare numarul prim p
// in n!
{
int rez=0,v=p;
while (n>=v)
{
rez=rez+n/v;
v=v*p;
}
return rez;
}
int main()
{
fi>>Z;
// rezultatul este cautat binar in intervalul [1,1000000000]
st=1;
dr=1000000000;
while (st<dr)
{
m=(st+dr)/2;
p2=f(m,2);
p5=f(m,5);
nrz=min(p2,p5);
if (nrz>=Z)
dr=m;
else
st=m+1;
}
p2=f(st,2);
p5=f(st,5);
nrz=min(p2,p5);
if (nrz==Z)
fo<<st;
else
fo<<-1;
fi.close();
fo.close();
return 0;
}