Pagini recente » Cod sursa (job #2978531) | Cod sursa (job #1249012) | Cod sursa (job #2634399) | Cod sursa (job #1763297) | Cod sursa (job #1974916)
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f ("fact.in");
ofstream g ("fact.out");
unsigned long p;
unsigned long sum;
unsigned long zeros(unsigned long k){
unsigned long sum = 0;
while(k){
sum += k / 5;
k /= 5;
}
return sum;
}
unsigned long binarySearch(){
unsigned long lo = 0;
unsigned long hi = LLONG_MAX;
unsigned long mid;
while(lo <= hi){
mid = lo + (hi - lo) / 2;
unsigned long zero = zeros(mid);
if(zero == p){
return mid;
}
else if (zero < p) lo = mid + 1;
else hi = mid - 1;
if(lo > hi) return -1;
}
}
int main(){
f >> p;
if(!p) g << 1 << '\n';
else{
if(binarySearch() == -1) g << -1 << '\n';
else g << binarySearch() / 5 * 5 << '\n';
}
}