Pagini recente » Cod sursa (job #3292462) | Cod sursa (job #1429915) | Cod sursa (job #609126) | Cod sursa (job #1631060) | Cod sursa (job #396109)
Cod sursa(job #396109)
#include<iostream>
#include<fstream>
using namespace std;
ofstream fout("fact.out");
long rez=500000010,p;
long nrz(long n)
{long no=0,ci=5;
while(n>=ci)
{no+=n/ci;
ci=ci*5;
}
return no;
}
void cauta(long lo,long hi)
{int k,mid;
if(lo==hi)
{if(p==nrz(lo))
rez=lo;
else
rez=-1;
}
else
{mid=lo+(hi-lo+1)/2;
k=nrz(mid);
{if(k==p)
{if(mid<rez)
{rez=mid;
cauta(lo,mid-1);
}
}
else
{if(k>p)
cauta(lo,mid-1);
else
cauta(mid+1,hi);
}
}
}
}
int main()
{
ifstream fin("fact.in");
fin>>p;
fin.close();
cauta(0,5*p);
if(nrz(rez)==p)
fout<<rez;
else
fout<<-1;
fout.close();
return 0;
}