Pagini recente » Cod sursa (job #248503) | Cod sursa (job #2898321) | Cod sursa (job #1662646) | Cod sursa (job #2483890) | Cod sursa (job #2984979)
#include <iostream>
#include <fstream>
using namespace std;
long long calc0(int nr){
long long sum=0;
nr/=5;
while (nr){
sum+=nr;
nr/=5;
}
return sum;
}
int main(){
ifstream fin("fact.in");
ofstream fout("fact.out");
int n;
fin>>n;
if (n==0){
fout<<1;
return 0;
}
unsigned long long nr=1,sum=0;
while (sum<=n){ // <= in puii mei...ca la pow de 5 nu ar merge
nr*=5;
sum+=nr/5;
}
nr/=5;
sum-=nr;
unsigned long long st=nr, dr=nr*5, mij, poz=0, rez;
while (st<dr){
mij=(st+dr)/2;
//cout<<mij<<' '<<poz<<'\n';
rez=calc0(mij-nr)+sum;
//cout<<rez;
if (rez==n)
poz=mij;
if (rez<=n)
st=mij+1;
else dr=mij-1;
}
if (poz==0)
fout<<-1;
else fout<<poz-poz%5;
}