Pagini recente » Cod sursa (job #2499537) | Cod sursa (job #2189330) | Cod sursa (job #1557486) | Cod sursa (job #332578) | Cod sursa (job #2862162)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
uint64_t P;
uint64_t maxl=0x6765c793fa10079d;
uint64_t nr0(uint64_t nr)
{
uint64_t r=0;
for(uint64_t i=5;true;i*=5)
{
r+=nr/i;
if(nr<i||i==maxl)break;
}
return r;
}
int main()
{
fin>>P;
uint64_t st=0,dr=0xFFFFFFFFFFFFFFFF;
uint64_t mij = st/2+dr/2 + ((st&1)+(dr&1))/2;
uint64_t last_result=mij;
while(st<dr)
{
mij=st/2+dr/2 + ((st&1)+(dr&1))/2;
uint64_t r=nr0(mij);
if(r<P)
{
st=mij+1;
}else if(r>P)
{
dr=mij-1;
}else {
dr=mij-1;
last_result=mij;
}
}
if(nr0(last_result)==P)
fout <<last_result;
else fout << -1;
return 0;
}