Pagini recente » Cod sursa (job #2101869) | Cod sursa (job #1208964) | Cod sursa (job #555005) | Cod sursa (job #2021127) | Cod sursa (job #1594535)
using namespace std;
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
long long func1(int mijloc);
void minim1(int mijloc, int p);
int main(){
long long p;
long long stanga, dreapta, mijloc;
//freopen("fact.in","r",stdin);
//freopen("fact.out","w",stdout);
cin >> p;
if(p == 0){
cout<<1;
return 0;
}
stanga = 0;
dreapta = 400000016;
while(dreapta - stanga > 1){
mijloc = (dreapta + stanga)/2;
if(func1(mijloc) > p){
dreapta = mijloc;
}
else if(func1(mijloc) < p)
stanga = mijloc;
else{
break;
}
}
//cout<<"stanga"<<stanga<<endl;
//cout<<"dreapta"<<dreapta<<endl;
//cout<<"mijloc"<<mijloc<<endl;
if(dreapta == stanga+1)
cout<<-1;
else
minim1(mijloc,p);
return 0;
}
long long func1(int mijloc){
long long nr = 0,putere = 5;
while(mijloc >= putere ){
nr += mijloc/putere;
putere *= 5;
}
return nr;
}
void minim1(int mijloc, int p){
long long nr,putere;
while(true){
nr = 0;
putere = 5;
while(mijloc >= putere ){
nr += mijloc/putere;
putere *= 5;
}
if(nr == p)
mijloc--;
else
break;
}
cout<<mijloc+1;
}