Pagini recente » Cod sursa (job #1436472) | Cod sursa (job #1697339) | Cod sursa (job #1523360) | Cod sursa (job #787679) | Cod sursa (job #91949)
Cod sursa(job #91949)
#include <fstream>
std::ifstream f1("fact.in");
std::ofstream f2("fact.out");
long long nrz(long long x);
long long bsearch(long long jos, long long sus, long long nr);
int main()
{
long long p, r;
f1>>p;
r=bsearch(0, 100000000, p);
if (r<0)
f2<<r;
else
{
while ((r%5)!=0)
r--;
if (r==0)
f2<<"1";
else
f2<<r;
}//else
f1.close();
f2.close();
return 0;
}//main
long long nrz(long long x)
{
long long rez, temp;
temp=x;
rez=0;
while ((temp/5)>0)
{
rez+=temp/5;
temp/=5;
}//while
return rez;
}//nrz
long long bsearch(long long jos, long long sus, long long nr)
{
long long mij=(jos+sus)/2;
long long nm=nrz(mij);
while ((jos<=sus)&&(nm!=nr))
{
mij=(jos+sus)/2;
nm=nrz(mij);
if (nm<nr)
jos=mij+1;
else
if (nm>nr)
sus=mij-1;
}//while
if (nm==nr)
return mij;
else
return -1;
}//bsearch