Pagini recente » Cod sursa (job #2563060) | Cod sursa (job #1876674) | Cod sursa (job #3031471) | Cod sursa (job #691007) | Cod sursa (job #1594416)
using namespace std;
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
long long func(int mijloc);
void minim(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 = 400000015;
while(dreapta - stanga > 1){
mijloc = (dreapta + stanga)/2;
if(func(mijloc) > p){
dreapta = mijloc;
}
else if(func(mijloc) < p)
stanga = mijloc;
else
break;
}
//cout<<mijloc<<endl;
minim(mijloc,p);
return 0;
}
long long func(int mijloc){
long long nr = 0,putere = 5;
while(mijloc >= putere ){
nr += mijloc/putere;
putere *= 5;
}
return nr;
}
void minim(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;
}